2015年第10本:《简约之美,软件设计之道》

简介:

《简约之美》这本书是够简约的,100页,还有不少的留白处。现在的出版商流行《xxx之美》之风,看过了《数学之美》、《架构之美》、《数据之美》……好几本这样名字的书。这本书一开始好像在从哲学的角度来分析软件设计中什么才是最重要的,想把软件设计纳入科学的领域。书中新的内容不多,但有几个观点还是给我留下了深刻的印象,更多地是强调软件维护的重要性。

“花更多的时间把程序写简单,相比一开始随意拼凑些代码再花大量的时间去理解,要快得多。”

所以需要不断地重构,否则自己都不愿看以前的代码。

“全部软件都有一个相同的目标:帮助其他人。”

看来我把软件定位于赚钱是不是有点急功尽利了?如果你的软件给人以极大的帮助,钱可能就会随之而来了吧,没赚钱,说明软件写得还是没有用。

“哪项需求能为人们提供最大的帮助,就应当赋予最高的优先级。”

这倒是一个划定需求优先级的不错的指导原则。

“软件设计科学的目标:设计程序员能尽可能简单地开发和维护的软件系统,这样的系统才能为用户提供尽可能多的帮助,而且能持续提供尽可能多的帮助。”

话有点绕来绕去,就是提供帮助、持续帮助、维护简单。

软件设计的方程式:

image

D是重构的可行性,Vn是当前价值,Vf是未来价值,Ei是实现成本,Em是维护成本。在判断价值时,应该考虑:多少用户会从中受益?某功能发挥价值的频率有多高?某功能在发挥价值时,它能发挥出多大的价值?

所以,软件系统都需要维护很长时间,大多数情况下,未来长期收益Vf和维护成本Em才是真正需要考虑的,与之相比,当前价值Vn和实现成本Ei变得无足轻重。

简而言之,相比降低实现成本,降低维护成本更加重要。

我们开发了太多的1.0版本的软件,那么我们只看到了方程式的左边部分D=Vn/Ei,但实际上如果你的软件要维护许多年,那么这个方程式的重点在右边,D=Vf/Em

软件设计的三大误区:(1)编写不必要的代码;(2)代码难以修改;(3)过分追求通用(过度工程overengineering)。

不要编写不是必需的代码,并且要删除没有用到的代码。否则,你会制造出额外的BUG,给他人造成困扰,真正需要这段代码时还需要做大量的工作。

避免提前优化,避免重复发明轮子。

不要去解决根本就不存在的问题。在动手解决之前,真正拿到证据,证明问题确实存在。

在增添新功能之前,花点时间去化简任何让你或你的同事觉得不够简洁的代码。

如果你无法预测未来,当前能做的事,能够降低维护成本的事情,就是把代码变简洁。

现在花一点时间去追求简洁,将来就可以节省大量的时间。

简洁到什么程度?简洁到傻子都能懂!

无论多么强调可读性都不为过:代码被阅读的次数远多于编写和修改的次数。

良好的设计是不懂代码的人看不到的,于是,软件设计师就成了一个费力不讨好的工作,解决重大缺陷为你赢得很多赞誉,但是避免缺陷的发生……没有人会注意到。

已经有许多的产品因为执着于单一用途而获得了巨大的成功。

 

对我产生共鸣的大概就是上面那么多,如果想看详细的笔记,有人已经在这里记得非常详细了

本文转自申龙斌的程序人生博客园博文,原文链接:http://www.cnblogs.com/speeding/p/4488279.html,如需转载请自行联系原作者

http://www.cnblogs.com/speeding/ 

相关文章
|
6月前
|
设计模式 程序员 测试技术
代码之美:在简约中寻找复杂性的艺术
【4月更文挑战第30天】 在编程的世界里,"Less is More" 不仅仅是一种设计哲学,它更像是一种信仰。本文将探讨如何通过简化代码来揭示其内在的复杂性,以及这一过程对技术成长和问题解决能力的影响。我们将深入理解编写简洁而高效代码的重要性,并分析这种实践如何提升软件的可读性、可维护性和扩展性。
|
2月前
|
算法 程序员
代码之美:编程中的艺术与哲学
在数字世界的深处,编程不仅仅是一门技术,它更是一种艺术与哲学的体现。本文将带领读者领略编程背后的美学原则,探讨如何通过简洁的代码、高效的算法和模块化的设计来达到技术与艺术的和谐统一。我们将一起探索那些让代码变得优雅而强大的秘诀,并反思编程实践对个人成长的深远影响。
|
3月前
|
算法 测试技术 开发工具
探索代码之美:高效编程的艺术与实践
【7月更文挑战第52天】在数字世界的构建过程中,编程不仅仅是一门科学,更是一种艺术。本文将深入探讨如何通过高效的编程实践来提升代码质量、优化开发流程,并且分享在此过程中所获得的技术感悟。我们将从代码的简洁性、可读性和性能优化三个维度出发,分析并提出实用的编程技巧和策略,旨在帮助开发者在追求效率的同时,也能享受编程带来的乐趣和成就感。
|
4月前
|
算法
代码之美:从技术感悟到生活哲学
在数字时代的浪潮中,编程不仅仅是一种专业技能,更是一种思考方式。本文将通过个人的技术实践和深入思考,探索编程如何影响我们的世界观、解决问题的方法以及日常生活。从算法的简洁性到系统设计的艺术性,我们将一同走进代码背后的美学与哲学,感受技术与生活的和谐共鸣。
|
5月前
|
算法 开发者
代码之美:技术感悟与编程艺术
【6月更文挑战第28天】在数字世界的构建中,代码不仅仅是冷冰冰的指令集合,更是开发者智慧与情感的结晶。本文将深入探讨编程背后的艺术性,揭示如何通过技术感悟提升代码质量,以及在日复一日的编码实践中如何保持创新与热情。
|
6月前
|
设计模式
代码之美:简洁性与可读性的和谐共舞
【5月更文挑战第18天】 在软件工程的世界中,"简洁"和"可读性"这两个词经常被提起,但它们之间的平衡却像一场优雅的舞蹈,需要精心编排每一个步骤。本文将探讨如何在编写技术代码时实现这种平衡,以及这一平衡对于提高代码效率、降低维护成本及促进团队合作的重要性。通过实例分析和个人经验分享,我们将深入理解简洁与可读性如何相辅相成,共同构建更加健壮、高效且易于维护的代码基石。
48 4
|
6月前
|
机器学习/深度学习 人工智能 算法
程序设计的艺术:代码之美与智慧之道
程序设计的艺术:代码之美与智慧之道
52 2
|
6月前
|
人工智能 算法 数据处理
代码之禅:从技术实践中领悟软件开发的艺术
【5月更文挑战第27天】 在数字世界的迷宫中,每一行代码都如同艺术家的笔触,描绘出千变万化的技术图景。本文将探讨软件开发的艺术性和技术性如何交织在一起,通过个人的技术实践和感悟,阐述如何在编码的过程中寻找到创造力与逻辑力的平衡点。我们将一起走进那些看似平凡却蕴含深意的编程实践,探索它们背后隐藏的智慧与哲学。
|
6月前
|
持续交付 开发者
代码与禅意:软件开发中的禅宗哲学
【5月更文挑战第28天】在快节奏的现代社会中,软件开发者常常面临着压力和挑战。本文将探讨如何将禅宗哲学融入软件开发实践,以提升开发效率、增强个人福祉并优化团队协作。通过对禅宗原则的深入理解,我们可以学会如何在编码过程中保持专注、简洁和灵活,同时培养对技术深层次的直觉理解。
|
6月前
|
存储 测试技术 持续交付
【软件设计师】一篇文章让你读懂什么是软件工程与系统开发
【软件设计师】一篇文章让你读懂什么是软件工程与系统开发