十九、文本操作
文本操纵语言对于编程的意义,就像刮刨机对于木工活的意义。
这些语言是赋予你能力的重要技术。
二十、代码生成器
编写能编写代码的代码
代码生成器:被动:只允许一次来生成结果。结果变成独立的。减少敲键次数,本质是参数化模板,根据一组输入生成给定的输出形式。
主动:在每次需要其结果时被使用。结果用过就扔,它总能由代码生成器重新生成。只是一种遍历手段。可取某项知识的一种表示形式,将其转换为你的应用需要的所有形式。
考虑主动代码生成器:设法让两种完全不同的环境一起工作。
开发数据库应用,处理两种环境--数据库和访问它的编程语言。
代码生成器不一定要生成代码,可生成几乎任何输出:HTML,XML,纯文本。
第四章 注重实效的偏执
你不可能学出完美的软件。
当每个人都确实要对你不利时,偏执就是一个好主意。
二十一、按合约设计
没有什么比常识和坦率更让人感到惊讶
按合约设计,核心:用文档记载声明,并进行校验。前条件,后条件,类不变项。
继承和多态是面向对象语言的基石,是合约可以真正闪耀的领域。
没有合约,编译器只能确保自雷符合特定的方法型构(signature)。适当设定基类合约,我们就鞥确保将来任何子类都无法改变我们的方法的含义。
二十二、死程序不说谎
有时别人在你意识到之前就能察觉你的事情出了问题。
我们很容易掉进“它不可能发生”这样一种心理状态。
所有错误都能为你提供信息。
要崩溃不要破坏(trash)
尽早检测问题好处之一是你可以更早崩溃,而许多时候,让你程序崩溃是你的最佳选择。
当你的代码发现某件事被认为不可能发生的事情已经发生时,你的程序就不再有存活能力,这时,它做的任何事都变得可疑,所有要尽快终止它。死程序比有隐患的程序危害要小得多。
标签:代码生成,小工,程序,生成,程序员,修炼,文本,合约,代码 From: https://www.cnblogs.com/uninan/p/16939752.html