《程序员修炼之道》第二章——A Pragmatic Approach

注重实效的途径

重复的危害

程序员须持续不断地维护。不管原因是什么,维护都不是时有时无的活动,而是整个开发过程中的例行事务
当我们进行维护时,我们必须要找到并改变事物的表示
系统中的每一项知识都必须具有单一、无歧义、权威的表示

DRY--Don't Repeat Yourself

啊,同学把我的书借走了。。。最近这本书就这样吧。。。。啊 无敌了。。。


10月12日。
书回来了。。。继续吧。。。

重复的发生:

  • 强加的重复
  • 无意地重复
  • 无耐性的重复
  • 开发者之间的重复
Make It Easy to Reuse

要把低级的知识放在代码中,它属于那里;把主食保留给其他的高级说明。
否则,我们就是在重复知识,而每一次改变都意味着要改变代码,也要改变注释。注释将不可避免得过时,而不可信任的注释比完全没有注释更糟

你可以因为性能原因而选择违反DRY原则。这经常会放生在你需要缓存数据,以避免重复昂贵的操作时。其诀窍是使影响局部化。对DRY原则的违反没有暴露给外界:只是类中的方法需要注意“保持行为良好”

你所要做的是营造一种环境,在其中要找到并复用已有的东西,比自己编写更容易。如果不容易,大家就不会去复用。而如果不进行复用,你们就会有重复知识的风险。

正交性:

重要性:

一旦你学会了直接应用正交性原则,你将发现,你制作的系统的质量立刻就得到了提高。

定义:

该术语用于表示某种不相依赖性或是解耦性。如果两个或更多事物中的一个发生变化,不会影响其他事物,这些事物就是正交的。

正交的好处

非正交系统的改变与控制更复杂是其固有的性质。当任何系统的各组件互相高度依赖时,就不再有局部修正这样的事情。

Eliminate Effects Between Unrelated Things

两个最主要的好处

提高生产率与降低风险

提高生产率

  • 改变得以局部化
  • 正交的途径还能够促进服用
  • 如果对正交的组件进行组合,生产率会相当微妙的提高——一个组件能做m件事情,另一个能做n件事情。然后俩一组成就变成了m*n——emmmm还他妈是玄学

降低风险

  • 正交的途径能降低任何开发中固有的风险
  • 有问题的代码区域被隔离开来
  • 所得系统更健壮
  • 正交系统很可能能得到更好的测试
  • 你不会与特定的供应商、产品、或是平台紧绑在一起,因为与这些第三方组件的接口将被隔离在全部开发的较小部分中

设计

系统应该由一组相互协作的模块组成,每个模块都实现不依赖于其他模块的功能。又是,这些组件被组织为多个层次,每层提供一级对象。这种分层的途径是设计正交系统的强大方式。

不要依赖你无法控制的事物属性

工具箱与库

在引入某个工具箱时(甚或是来自你们团队其他成员的库),问问你自己,他是否会迫使你对代码进行不必要的改动。如果对象持久模型是透明的,那么他就是正交的。如果它要求你以一种特殊的方式创建或访问对象,那么他就不是正交的。

例子:

ejb系统:
在ejb中,描述每个事物的开始与结束时作为元数据,在任何代码之外以生命的方式表示的。同一应用代码不用修改,就可以运行在不同的EJB事物环境中。
另一个方面是AOP

编码

  • 让你的代码保持解耦
    编写“羞怯”的代码——也就是不会没有必要地向其他模块暴露任何事情、也不依赖其他模块的实现的模块
  • 避免使用全局数据
  • 避免编写相似的函数
    养成不断地批判自己的代码的习惯。寻找任何重新进行组织、加以改善其结构和正交性的机会

可撤销性:

本人觉得这个可撤销性有点难以实现,——各位大佬有什么其他想法吗?我还没接触到可撤销的这种特性。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值