最近在读《软件开发的201个原则》,书内容不多,但是每一页都看的很仔细,好像往往这种言简意赅的书更让人有静下心来仔细阅读的欲望。在我看来,读书的作用本来就不是解答所有的困惑,而是激发人更加深入地学习的动力。
如果看这本书的时候,你会主动搜索文献或者资料,去了解更多的信息,那说明这本书就已经帮助了你。话不多说,抛砖引玉,今天和大家分享下我的“读后感”。
a . 注意:开发一次性原型要快,不用担心质量,可以使用任何工具任何语言,只需要开发那些没有充分理解的特性。
b . 注意:开发演进式模型时,从小的可用系统开始,只实现少数功能,然后逐步扩展,覆盖更多的功能子集,这样可降低风险。
8 . 为变化做好准备:开发过程中的变化是不可避免的,可能体现在新的代码、新的测试计划、新的需求或需求变更等,不要抱怨,积极应对,做好准备。
9 . 让软件只需简短的用户手册:即简短的文档,文档内容越少,软件质量越高,这里不是说要少写文档,而是要做高质量的软件,让用户尽量少看文档就能使用明白。
10 . “知道何时”比“知道如何”同样重要:一个工程师要了解更多的技术,要知道什么时候使用什么技术,要知道什么项目使用什么项目。
11 . 跟风要小心:当学习新技术时,不要轻易接受与之相关的不可避免的炒作。
不要忽视技术:不要固步自封,紧跟技术潮流,每年努力参加1-2个关键会议。与参会者的交流,很可能比会议报告更重要。
使用文档标准:如果你的项目、组织或客户要求遵循一套文档标准,那就要遵循它,理智的执行。
要承担责任:软件有任何问题时,不要找任何借口,要承担责任,要么做好,要么就不做。
先确定问题,再写需求:先明白要解决的是什么问题,再提出相关的需求。
16 . 立即修复需求规格说明中的错误:
a . 如果错误保持到系统设计阶段,定位和修复要多花5倍的代价
b . 如果保持到编码阶段,要多花10倍的代价
c . 如果保持到单元测试阶段,要多花20倍的代价
d . 如果保持到交付阶段,要多花200倍的代价
17 . 记录需求为什么被引入:记录每个需求的动机。
18 . 给需求排列优先级:并非所有需求都是同等重要的,要明确需求的优先级,先做哪个需求,后做哪个需求,或者在关键阶段哪个需求可以暂时舍弃掉。
19 . 明确环境超出预期时的系统行为:当环境超出为其定义的任何约束时,在软件需求规格说明中应明确声明预期的系统响应。用我们开发者的话说就是,做好边界处理。
20 . 评估备选方案:设计架构或者某个解决方案时,最好详细列出多种方法,明确优缺点,在这些方法之间权衡分析,最终选择一种。
21 . 做好封装:面向对象的一种思想,对某一需求做好抽象,做好封装,做好信息隐藏。
22 . 不要重复造轮子:程序员经常一次又一次的重新发明组件,却很少修补已有的组件。
23 . 保持简单:构建软件设计有两种办法,一种办法是使它简单到明显没有缺陷,另一种办法是使它复杂到没有明显的缺陷。
24 . 保持概念一致:这是高质量设计的一个特点,方式一定要统一,包括模块如何向调用方通知错误,软件如何向用户通知错误,如何组织数据结构,模块通信机制,文档标准等等。
25 . 使用耦合和内聚:尽量做到高内聚低耦合。高耦合意味着,当修改一个组件时,很可能需要修改其他组件。低内聚意味着,难以分离出错误原因或者难以判断为满足新需求而要修改的位置。
26 . 为变化而设计:需要选择合适的架构、组件和技术来适应不断的变化,设计需要做到:
a . 模块化:产品由独立部分组成,每一部分都可以单独升级和替换,对其他部分造成最小的影响。
b . 可移植性:产品应该很容易修改以适应新的硬件和操作系统。
c . 可塑性:产品可以灵活适应预期外的新需求。
27 . 软件最好做到通用,灵活:通用性体现在,在不同的场景下不做任何修改就能执行预期功能。灵活性体现在,它很容易被修改,以在不同的场景下执行其功能。
28 . 使用高效的算法:了解算法复杂度是成为优秀软件工程师的必要前提。高效的算法和低效的算法可能会相差几个数量级。
29 . 编码时避免使用特殊技巧:很多程序员喜欢编写比较trick的代码,然而这种程序让别人很难理解,也很难维护,这种特殊技巧被频繁使用的理由有很多:
a . 程序员都非常聪明,他们想展示这种聪明
b . 维护人员在最终搞清这些特殊技巧如何生效时,不仅会认识到原来的程序员有多聪明,也会意识到自己有多么聪明。
c . 职业安全感。
30 . 避免使用全局变量:全局变量写代码很方便,但是如果此全局变量访问出现问题,很难确定问题具体出现在哪个模块,所以,可以将重要数据封装在对应模块中,做好封装。
31 . 编写可自上而下阅读的程序:有助于读者理解。
32 . 使用有意义的别名:确保每个变量,每个函数的命名都有意义,尽量做到代码即文档,代码即注释。
33 . 程序首先是写给人看的:程序的功能以及效率固然重要,但程序也是写给人看的,要提升程序的可读性,以免在这个过程中对相关人员造成负面影响。
34 . 先确保正确,再提升性能:不要担心优化问题,每个项目都有很大的进度压力,在这种情况下,任何时候一个组件要是能够按时完成并且可靠运行,都值得庆祝,先保证完整功能,然后再去考虑做性能优化。
35 . 先写文档后写代码:也可以理解为,不要上来就埋头写代码,要先想清楚代码应该怎么写,然后再动手。
36 . 代码审查:即code review,一定要做code review,code review大约会消耗15%的研发资源,可以将总成本减少25%~30%。
37 . 不要嵌套太深:即圈复杂度不要太高,不过过多的if-else,switch-case之类的嵌套,考虑做优化。
38 . 编程语言不是接口:如果你是一个好的程序员,对任何一种编程语言来说你都应该是一个好程序员。
39 . 编程语言的知识没那么重要:一个真正优秀的程序员很好的理解和赞赏高质量编程的概念,而不只是了解某些编程语言的语法和语义特性。为一个项目选择语言的首要驱动力应该是什么语言更适合,而不是说我们只知道C语言。
40 . 格式化代码:使用标准的format规则,可大大提高程序的可读性。选择遵循哪种规则不重要,但一旦选择了,就要保持一致。
41 . 不要太早编码:即在编码之前,要确认需求和设计都是正确且合适的,即想清楚再编码。
42 . 为你的代码做单元测试:老生常谈了,自己写的代码自己都不测试就去提测,那得多坑啊。
43 . 好的管理比好的技术更重要:好的管理可以激励人们做到最好,糟糕的管理会打击人们的积极性。
44 . 人是成功的关键:具备合适经验能力的人,是在预算内按时完成满足用户需求软件的关键。
45 . 几个好手要强过很多生手:对于关键任务,最好只安排少数有足够经验的工程师,而不是安排许多没有经验的工程师。
46 . 不要设定不切实际的deadline:要设定合理的deadline,然后严格踩住。
47 . 知晓风险:在开始项目时,要熟悉经常导致软件灾难的情况,并制定降低风险的计划:
a . 人员短缺
b . 不切实际的排期
c . 不理解需求
d . 开发糟糕的用户界面
e . 没有控制需求变化
f . 缺乏可重用或接口化的组件
g . 糟糕的响应时间
h . 试图超越当前计算机技术的能力
48 . 预先了解风险:在项目计划的早期阶段,要梳理与你的项目相关的最大风险列表。
49 . 有时重新开始会更好,有时候从头开始设计和编码可能是更好的选择。
50 . 每次改动后都要进行回归测试:这个相信大多数程序员都会遵循的一个原则,代码改动后需要验证它是否能够正确的运行。
51 . 在优化前先进行性能分析:先做性能分析,拿到性能数据进行性能分析后再考虑做优化,80-20原则,80%的CPU周期将被20%的代码消耗,我们应该找到那20%的代码,然后对它们做优化。
本文由哈喽比特于2年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/2sgLPjyujNrO8fgsTRTPDA
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。