《梦断代码》阅读笔记03

(1)软件时间
代码行数的度量是个巧手语
帕兰特说,“总是按计划执行远没有保持较快进度并清楚做到哪一步来得重要。如果老往计划里掺水,从而达到目标,就会变成退而求其次,完成的特性更少。”
(2)质量三角——时间、金钱和特性(或质量)
在SEI,汉弗里和同事们创建了软件成熟度模型(Capability Maturity Model,CMM),作为一种衡量软件开发组织品质的准绳。CMM给出了可供编程团队攀登的五级台阶。要读完CMM原则的全部文档可能得耗尽你的余生,但汉弗里在1997年发表的非正式描述给出了简单的概述:“位于第一级的组织基本上什么都没做。第二级组织做一些计划、跟踪、配置管理工作,也讨论质量保证之类的话题。第三级组织开始定义过程——如何工作、如何完成任务、可训练的事项等。在第四级,他们采用衡量准绳。他们有一套真正跟踪和管理自己所做工作的框架,一种可统计跟踪的系统。第五级组织拥有持续改进的过程。”

缺陷总是存在
只要我们持续要求软件完成新任务、解决新问题,修正今天的缺陷就不能让我们免于明天的崩溃。在打算重复成功时,虽然软件方法论非常有帮助,你还是只能照葫芦画瓢。如果是在探寻未知的领域,最佳实践可能会帮助你稍微加快一点进度,但却无法指点前进方向。
(3)如我们所见,软件有时感觉难以对付,是因为它不可见。不可见之物难以设想,而高度复杂的不可见之物尤难用作沟通话题。但是不可见并非唯一问题:我们也看不见电力、磁力或重力,但却能为多数实用目的可靠地预测其行为。可是,想要从软件中取出一块行为保持一致的部分以便诊断问题,这却是我们常常无法做到的。
软件是一种分层结构,每一层都为相邻的上下层翻译信息和过程。底层是机器,只有纯粹的二进制0和1。顶端是人类,人类打造和使用这些层。
在计算领域中,变化不可避免
注释是代码行之间的英文大白话。每种编程语言都有程序员可用来标记注释的符号,这些注释旨在帮助其他程序员理解代码;有良好注释的代码是优秀编程实践的特点;它说明你关注自己在做的事,而且也照顾到那些跟进修正代码缺陷的人。注释也是一种程序员之间沟通的内部渠道,偶尔甚至还会成为竞技场或排遣无聊的出口。
(4)杰隆·拉尼尔说道:“要想在大型软件项目中保持高效,你得效忠于它。你要将它印在脑海之中。我在做大项目的时候,常常睡觉也梦到代码。”
软件不太善于对付无限性。计算机都有存储容量限制,当程序陷入无限循环——一个没有出口的例程——就会停止回应。
软件之本质困难,乃是强加于技术进步的人类自由意志和不确定性的通行费。

以上内容大部分摘抄于《梦断代码》,若有侵权之处,请联系删除

原文地址:https://www.cnblogs.com/miao-com/p/14869173.html