程序员|糟糕的程序员比优秀的程序员差在哪里?( 三 )


这样的问题场景 , 在各种各样的软件开发场景中 , 随处可见 。 人们为了改善软件开发中的这些问题 , 使程序更加灵活、强壮、易于使用、阅读和维护 , 总结了很多设计原则和设计模式 , 遵循这些设计原则 , 灵活应用各种设计模式 , 就可以避免程序腐坏 , 开发出更强大灵活的软件 。
比如针对上面这个例子 , 更加灵活 , 对需求更加有弹性的设计、编程方式可以是下面这样的:
```
public interface Reader <{p>\tint read();

public interface Writer <{p>\tvoid write(int c);

public class KeyBoardReader implements Reader <{p>\tpublic int read() <{p>\t\treturn readKeyBoard();


public class Printer implements Writer <{p>\tpublic void write(int c) <{p>\t\twritePrinter(c);


Reader reader = new KeyBoardReader();
Writer writer = new Printer():
void copy() <{p>\tint c;
while(c=reader.read() != EOF)
writer(c);

```
我们通过接口将输入和输出抽象出来 , copy程序只负责读取输入并进行输出 , 具体输入和输出实现则由接口提供 , 这样copy程序就不会因为要支持更多的输入和输出设备而不停修改 , 导致代码复杂 , 使用困难 。
所以你能看到 , 应对需求变更最好的办法就是一开始的设计就是针对需求变更的 , 并在开发过程中根据真实的需求变更不断重构代码 , 保持代码对需求变更的灵活性 。
小结我们在开始设计的时候就需要考虑程序如何应对需求变更 , 并因此指导自己进行软件设计 , 在开发过程中 , 需要敏锐地察觉到哪些地方正在变得腐坏 , 然后用设计原则去判断问题是什么 , 再用设计模式去重构代码解决问题 。
我在面试过程中 , 考察候选人编程能力和编程技巧的主要方式就是问关于设计原则与设计模式的问题 。
我将在”软件的设计原理“这一模块 , 主要讲如何用设计原则和设计模式去设计强壮、灵活、易复用、易维护的程序 。 希望这部分内容能够帮你掌握如何进行良好的程序设计 。
思考题你在软件开发实践中 , 是否曾经看到过一些糟糕的代码?这些糟糕的代码是否符合僵化、脆弱、牢固、粘滞、晦涩这些特点?这些代码给工作带来了怎样的问题呢?
欢迎你在评论区写下你的体验 , 我会和你一起交流 。