优雅编程之这样处理系统,你就“正常”了

开心一笑

【一个国王要替公主征婚,把一个苹果放在公主头上,谁要把它射中就有机会迎娶公主。

第一个男士把苹果射中,他说:“I’m 罗宾。”

第二个男士也把苹果射中,他说:“I’m 后羿。”

第三个男士不小心把公主射死了,他说:“ I’m sorry…” 】

提出问题

如何开发系统才能使代码更整洁???

解决问题

1)系统的构造与使用分开;好像建设大楼时,构建大楼的吊车、铲车之类的东西,在大楼投入使用时已经完全不存在一样;软件系统应该讲启动过程和启动过程之后的运行时逻辑分开,在启动过程中创建应用对象,也会存在相互的依赖。 

2)系统的构造与使用分开解决方法:

  • 分解main:将系统中的全部构造过程搬迁到main或者main模块中:main函数创建对象,再将对象传递给应用,应用直接使用;(Java应用程序必须从main()方法开始运行)

  • 工厂:可以让应用控制实体创建的时机

  • 依赖注入

    例如在Spring MVC中:

    @Rest(DeView.class)
    public class ViewController {
    
    //这些service都是通过依赖注入的,我们并不会自己去new出来
    //而是把new对象任务交给spring去做,而spring是在启动程序的时候就
    //初始化这些service的,既达到构造与使用分开
    @Autowired
    private IViewService viewService;
    @Autowired
    private IResourceOperationService resourceOperationService;
    @Autowired
    private IEditUnitService editUnitService;
    @Autowired
    

    }

3)扩容:我们不可能一开始就把系统做对,实现好当前客户的需求,然后重构,扩容来实现新的客户需求。 软件系统与物理系统可以类比。他们的架构都可以递增式增长,只要我们持续将关注面恰当的切分。

4)AOP,面向方面编程。Java中三种方面和类似方面的机制:代理,纯AOP框架,AspectJ

  • Java代理:Proxy.newInstance(被代理接口,InvocationHandler h)方法执行后,被代理类的所有方法都会被加上Handler的处理逻辑,这是简单的AOP,但是太复杂;(这里就是JDK提供的动态代理)
  • 纯AOP框架:Spring AOP(需进一步了解)
  • AspectJ语言(自行了解)

总结:这里讨论的几点,都是希望我们在软件开发过程中,记住这几方面的实现,让开发代码更整洁。

读书感悟

来自《活出生命意义》

  • 突然间,我一生中第一次领悟到一个真理,它曾被诗人赞颂,被思想家视为绝顶智慧。这就是:爱是人类终身追求的最高目标。我理解了诗歌、思想和信仰所传达的伟大秘密的真正含义:拯救人类要通过爱与被爱。我知道世界上一无所有的人只要有片刻的时间思念爱人,那么他就可以领悟幸福的真谛。在荒凉的环境中,人们不能畅所欲言,唯一正确的做法就是忍受痛苦,以一种令人尊敬的方式去忍受,在这种处境中的人们也可以通过回忆爱人的形象获得满足。我生平第一次理解这句话“天使存在于无比美丽的永恒思念中”。
  • 如果说生命有意义,那么遭受苦难也有意义。苦难、厄运和死亡是生活不可剥离的组成部分。没有苦难和死亡,人的生命就不完整。
  • 人对意义的追寻会导致内心的紧张而非平衡。不过,这张紧张恰恰是精神健康的必要前提。我敢说,世界上再没有别的能比知道自己的生活有意义更能有效地帮助人活下去(哪怕是在最恶劣的环境下)。尼采的一句话很有智慧:“知道为什么而活的人,便能生存。”
  • 必须直面所有的苦难,不能软弱,眼泪是无用的,但也不必讳言流泪,因为眼泪见证了人们承受痛苦的巨大勇气。
  • 我们可以用三种不同的方式来发现生命之意义:(1)通过创立某项工作或从事某种事业;(2)通过体验某种事情或面对某个人;(3)在忍受不可避免的苦难时采取某种态度。第一种就是成就或成功,其意义显而易见。找到生命之意义的第二种方法是通过体验某种事情——如真善美——通过体验自然和文化或体验另一个人的独特性——就是说去爱某个人。
  • 在一定意义上,一旦找到了意义(比如牺牲的意义),痛苦就不再是痛苦了。这就是意义疗法的要义之一:人主要关注的不是获得快乐或避免痛苦,而是看到其生命的意义。这也是人们为什么甚至准备着去受苦,在这个意义上,他的痛苦有了意义。

其他

如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎转载,点赞,顶,欢迎留下宝贵的意见,多谢支持!

时间: 2024-10-09 19:25:26

优雅编程之这样处理系统,你就“正常”了的相关文章

centos shell编程4【分发系统】 第三十八节课

centos shell编程4[分发系统]  第三十八节课 http://www.cnblogs.com/MYSQLZOUQI/p/4811790.htmlmkpasswd 生成密码的工具,安装 expect包 yum install -y expect 上半节课 下半节课 f

select返回值可以这样子优雅编程

以前的代码: void Select(){    fd_set  fdSet;    static struct timeval tv;    tv.tv_sec=0;    tv.tv_usec = 500000;//采用select每500毫秒轮询一次查询是否有WEB写入FIFO的告警    FD_ZERO(&fdSet);    FD_SET(m_fd,&fdSet);    int nSelectRet=select((m_fd+1),&fdSet,NULL,NULL,&a

福大软工1816 · 团队现场编程实战(抽奖系统)

福大软工1816 · 团队现场编程实战(抽奖系统) 队员职责分工 团队成员 分工 张扬 预处理算法.抽奖算法.解决其他问题.本次博客撰写 韫月 "创建抽奖活动"页面的开发."已发布""已结束"等页面的动态生成 愈明 "创建抽奖活动"页面的开发.弹窗交互 文婧 "已发布"."已结束"页面的开发 地秀 "已发布"."已结束"页面的开发 全炯 各个页面的

【优雅编程之道】之方法的9点建议

开心一笑 [一个去看演出的朋友回来了. 我问他:"怎么样演出好看吗?" 朋友:"人太多了,我去晚了,在后面什么也看不见,只能跳起来看几眼, 后来跳累了就不看了,也没有什么好看的." 这时我另外一个朋友也回来了. 我:"你也看戏去了?" 另外一个朋友:"恩!" 我:"好不好看?" 另外一个朋友:"好看个屁!戏没看多少,就看见前面一个SB在那里跳来跳去的!"] 提出问题 项目中如何优雅编写方

【Unity编程】Unity动画系统(一)

Unity动画系统 Unity动画系统,也称为"Mecanim",提供了以下功能: 简单的工作流程,设置动画的所有元素,包括对象,角色和属性. 支持导入外部创建的动画片段和使用内置动画编辑器制作的动画片段. 人型动画重新定位,动画角色的运动控制可以被所有的角色模型共享,即角色的外观(SkinedMesh)和运动(Animator)是分离的,它们互相组合之后形成最终的动画. 用于编辑动画状态的的简化工作流程,即动画控制器. 方便预览动画片段,以及片段之间的插值过渡. 这使得动画师可以独立

编程题 模板生成系统

题目来自2015年09月CCF计算机职业资格认证考试 问题描述 成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的.例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是 而当用户为 Jerry 时,网页的源代码是 这样的例子在包含动态内容的网站中还有很多.为了简化生成网页的工作,成成觉得他需要引入一套模板生成系统. 模板是包含特殊标记的文本.成成用到的模板只包含一种特殊标记,格式为 {{ VAR }},其中 VAR 是一个变量.该标

社交网络编程API之iOS系统自带分享

社交网络编程API 社交网络编程主要使用iOS提供的Social框架,目前Social框架主要包含两个类: SLComposeViewController 提供撰写社交信息(如微博信息)的视图控制器,有iOS系统提供UI,就是写入要分享内容的小弹出框. SLRequest封装了HTTP请求,提供了同一的请求社交网络服务的接口,能够直接与社交网路服务通信的能力,没有UI需要自己编写设计. 除了Social框架外,还有可能用到UIActivityViewControlelr和ACAccount.UI

关于编程开发的最小系统学习法

文/向右奔跑(简书作者) 原文链接:http://www.jianshu.com/p/c340c2d3c152 著作权归作者所有,转载请联系作者获得授权,并标注"简书作者". 今天中午与成长会shawn童靴见面,他在陆金所做Java开发,自学Python一年多了,能坚持下来很不容易.现在已经具备了一定的生产力. 不过,他说没有用py做过什么项目.我说,刚好有个想法,一个月前也试了试,不知道是不是感兴趣,用Java和py都可以做.最好是py,需要js熟悉一些. 我说,我想追踪一下现在成长

团队现场编程实战(抽奖系统)

目录 组员职责分工 github 的提交日志截图(鼓励小粒度提交) 程序运行截图 程序运行环境 GUI界面 基础功能实现 LCG算法 过滤(降权)算法 算法思路 红黑树 附加功能实现(20分) 鼓励有想法且有用的功能(10分) 遇到的困难及解决方法 组员:胡绪佩 组员:庄卉 组员:政演 组员:刘一好 组员 翟丹丹 组员:刘恺琳 组员:青元 组员:葛家灿 组员:何家伟 组员:黄鸿杰 组员:何宇恒 马后炮 组员:胡绪佩 组员:何家伟 组员:翟丹丹 组员:刘一好 组员:刘恺琳 组员:青元 组员:庄卉