这本二十岁的书的一小篇评论
写于2016年 ,并进行了微修正。
作者的原始表白被称为“ Windows 95编程之禅”。 不用担心数字“ 95”,关键是Zen,而不是最近几十年主要操作系统的快速变化版本号。 本书是针对垂直(全栈)开发人员的一系列建议和实践,不仅可以使他们在现代编程世界中生存,还可以产生所需质量的结果。
在第22页上,娄定义了典型的读者:“质量狂热者”。 对于那些生活中对根据“ tyap-lyap-commissioning”(“ x * ak牛x-x * and牛和生产”)方法学的工作非常满意的人,该书不太可能有所帮助。
这本书过时了吗? 最初,在1995-96年描述了一个迅速的变化,当Windows 95(在较小程度上是NT)广泛使用时,编程接口(API)的更改略有不足,而事实证明,必须同时维护三个版本的程序功能。 Microsoft操作系统。 当时,卢·格林诺(Lou Greenaw)本人已经三十岁(第87页)。
有人抱怨现代技术的迅速变化吗? 这是25年前从DOS切换到Windows时发生的情况,以及20年前将16位系统更改为32位系统时发生的情况。 与1995年相比,当前向64位体系结构的长期迁移代表了正确性的巅峰,对于应用程序程序员而言,它被多层抽象和虚拟机从转换的内部厨房拒之门外。
作者不会错过任何机会来讨论编程的本质,并以“
使用各种工具来创建抽象级别并将其应用于解决逻辑问题的技巧”中进行编写。 似乎,如果不是一本好菜谱,手工艺品还需要什么呢? 但是,娄立即宣布(第20页),他的做法是“
更多地谈论您不应该做的事情 ”,并且“
依赖于您将独立判断如何应用该建议或该建议的事实 ”。 再进一步一点(第48页)将程序员分为“数学家”和“珠宝商”。
那就是像工艺品。 但事实并非如此。 有时根本没有。 在我的
书中,我将软件工程定义为“
一种折衷的技术合金,技术创造力的业余爱好者和大规模生产专业人士都可以根据模式和先例使用它, ”但是,我并不坚持解释。 编程是如此广泛,每个人(如果需要)都可以看到他想要的东西,并在他里面。
在介绍性部分中,Lu实用地讨论了公共程序和私人程序(我将公共程序分为定制程序和复制程序),程序的有用性,对用户的态度,并提供了许多“恐怖故事”类别的示例。 然后,她以镇定的心继续进行(第63页),以了解宏观水平的建议。 这包括诸如本地化,扩展前景的全局设置,文档和自我文档神话,界面的人体工程学和用户友好性,代码的测试和重用,功能测试等主题。
作者并没有忽略诸如无法接受的培训和教育(第90页)以及对经济素养的要求(第73页)这样的重要主题,“
您必须是经济学家” 。
比较计算机资源需求很有趣(第88页)。 的确,例如,如果我们以1996年的Windows NT示例为例,则为了舒适地处理应用程序(开发环境,办公室,Internet),需要16 MB的RAM,而操作系统本身需要8 MB。 对于2016年的Windows 7或10(具有相同的NT内核),需要4 GB的内存,其中OS仅使用1 GB。 1:2的比例甚至下降到1:4。 因此得出了令人失望的结论:问题不仅仅在于操作系统,而在于程序。
在第105页上,作者平稳地切换到微观建议。 Lou看到宏观和微观水平之间的区别是什么? 是的,事实是,在没有设计的情况下,程序员会立即进入微观级别,甚至不会怀疑涌入其中的问题很大程度上是由于忽略了宏任务而引起的。
本质上,没有经济学家只了解宏观经济学或微观经济学。 这些只是骗子。 但是,在那些自称为程序员的人中,这样的庸医是有条理的!
在微观层面上,作者还提供了许多有用的技巧。 我喜欢这一页(第109页):“
切勿检查您不知道如何处理的错误 。” 似乎来自G. Oster的一系列“有害”建议,但这是错误的印象。 我遇到过类似
try... catch
或
try... except
这样的代码片段
try... except
多次,
catch/except
块为空。 因为有时会弹出错误,并且微观级别的程序员不知道该如何处理。 该代码不仅难看得很难看,而且非常危险,因为它会导致其他抽象级别的不可预测的后果。
随后的文字专门介绍了垂直开发人员不断遇到的各种主题。 我只列出一些。
- 当程序偏执时如何避免用户执行任何操作(如LooksLike()而不是Is()之类的检查)时如何避免“假阴性”。
- 将用户界面代码与逻辑分开。 在不强制使用MVC / MVP拼写的情况下,作者列出了此方法的所有优点,但也没有忘记其缺点,而缺点主要包括严重的附加工作。
- 更改版本时,框架库中的任何更改都将负担程序员的负担。 快速更新的自组织问题在更新框架时变得头疼。
- 关于二进制配置文件的好处以及保护程序及其资源的完整性的好处。
- 使用DLL的简单规则。 它也适用于不在全局缓存中的现代.NET程序集。
- ...还有更多
在第147页上,Lou引用了程序员的两个极端特征,即Gizmonauts和Neoluddites。 像往常一样,真相介于两者之间。 您不能仅仅因为它们是新技术就选择它们。 但是,如果要从现代化中受益,就不可能在旧的环境和方法中放任自流。
从2019年开始,这本书中有些地方似乎很有趣,例如(第154页),有关存储其程序源硬拷贝的建议。 手稿当然不会燃烧,但是...
尽管作者是专业的C ++开发人员,但在第167-180页上,Lou给出了
在所有新项目中使用Delphi的很多理由。 确实,Delphi在1995年的出现与发布新的32位Windows一样具有革命性。
退出本书,在2019年听到Delphi是过时产品的说法很有趣。 Java或C#就像是现代环境。 让我提醒您,Java只出现了一年,而C#才出现了四年。 对于在2010年左右开始工作的程序员来说,这三个名字都应该看起来像Kobol或Fortran。
根据Lou自1996年以来的观点(第146页),一种典型的情况是:匆匆忙忙的程序员犯了一个错误,没有时间研究替代方法,从无知中选择了一条不自然的道路。 在这种情况下,对于经验丰富的开发人员来说,正确的决定是听取您的感受。
这是任何环境中的Zen编程。 我也希望你。