林锐《软件工程思想》中,自己深有感触的一些言语摘录。有些可能是反面,有些是正面。
良好的体系结构是普遍适用的,它可以高效地处理多种多样的个体需求。
如果当需求发生变化时,程序员不得不去修改软件的体系结构,那么这个软件的系统设计是失败的。
上层子系统可以使用下层子系统的功能,而下层子系统不能够使用上层子系统的功能。
在相邻层之间定义清晰的接口。
应该让模块仅仅公开必须要让外界知道的内容,而隐藏其它一切内容。
内聚和耦合是密切相关的,与其它模块存在强耦合的模块通常意味着弱内聚,而强内聚的模块通常意味着与其它模块之间存在弱耦合。
如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合。
高效率的程序永远不会过时。
设计高效率的程序是基于良好的数据结构与算法,而不是基于编程小技巧。
只有通过预先分析问题来确定必须达到的性能目标,才有希望挑选出正确的数据结构。
使用简单的设计就能够达到性能目标时,选用复杂的数据结构也是没有道理的。
我们必须先了解应用的需求,再寻找或设计与实际应用相匹配的数据结构。
仅靠程序员主观想象设计而成的界面往往得不到大众用户的认可。
不要片面追求外观漂亮而导致失真或华而不实。
所有真正杰出的设计一旦被设计好,看起来都是那么的简单和显而易见。但是在获得杰出设计的过程中,需要付出令人难以置信的努力。
设计孤立的类是比较容易的,难的是正确设计基类及其派生类。
如果类A和类B毫不相关,不可以为了使B的功能更多些而让B继承A的功能。
若在逻辑上B是A的“一种”(a kind of ),则允许B继承A的功能。
若在逻辑上A是B的“一部分”(a part of),则不允许B继承A的功能,而是要用A和其它东西组合出B。
没有人强迫你采用何种命名法,但有一点应该做到:自己的程序命名必须一致。
非法情况与错误情况之间的区别,后者是必然存在的并且是一定要作出处理的。
一旦确定了的假定,就要使用断言对假定进行检查。
一般教科书都鼓励程序员们进行防错性的程序设计,但要记住这种编程风格会隐瞒错误。
不要编写集多种功能于一身的函数,在函数的返回值中,不要将正常值和错误标志混在一起。
无论什么时候,都不要觉得自己的编程水平天下第一,看到别人好的技术和风格,要虚心学习。
如果把系统分析和系统设计比作“战略决策”,那么编程充其量只是“战术”。