为什么优秀的程序员也是优秀的设计师

简介:

在高科技行业中,我听过很多伟大的开发人员声称对设计一无所知。他们将设计当作是一个神秘的世界,一个编程世界之外的世界。他们觉得他们永远无法“干”设计的工作,因为他们根本没有关于这方面与生俱来的能力。

但是请恕我不敢苟同。好的编程也是不错的设计。因为,好的代码是经过精心设计的代码。任何能写出好代码的程序员其实也是在写经过精心设计的代码。定义什么是优秀代码的原则惊人地相似于何为优秀设计的原则。

不信的话,请看Dieter Rams的Ten Principles of Good Design,不知道你发现了没有,在几乎所有情况下,你都可以用”代码“一词取代”设计“,用”软件“一词取代”产品“,然后你就得到了关于如何编写好代码的原则。

好的代码是创新性的

这是显而易见的,当你写代码时,你的目的是尽可能地用最好的方法解决问题。

好的代码让软件有用

如果你正在写的代码不能在软件中发挥作用,而且也不利于其他一些有用的代码,那么很可能这些代码是没有必要的,而不必要的代码通常是不好的代码。

好的代码具有审美趣味

好的代码易于阅读,优秀程序员知道,花时间去想一个明确的名字、分解功能、致力于代码的可读性是值得的。好的代码在屏幕上会有一种美感。它总是被很好地执行、规划和组织。

好的代码让软件更易于理解

此外,分解功能,以及选择有意义的方法名和变量名在好代码中是必不可少的,并且能够表达代码的目的,使代码更易于理解。难于理解的代码往往是不好的代码。

好的代码不唐突

好的代码不会打扰其他代码,会保持代码的SOLID原则,而这对于创建良好的可维护代码非常重要。当这个方法干扰到另一个方法时,它会导致我们很难管理代码。方法本身应该是独立的,这样才能更易于管理,更易于重用。

好的代码言行一致

确保代码的行为和它的名字和目的保持一致,分解这些问题在代码中很重要。如果你的方法是一个命名函数,那么它应该只需命名即可,不需要做其他。它不应该提供保存、更新、重命名、删除以及其他任何凡是定义中没有明确说明的功能。

好的代码是持久性的

创建易于管理,易于维护的代码非常重要。可能你的某些代码在10年之后依然在被使用,但如果你创建了一堆不好的混杂了问题的代码,那么它们就会时不时地成为你前进路上的拦路虎,让你头痛不已。

好的代码周密详尽

好的代码是对问题经过全面周详考虑的解决方法,事无巨细,面面俱到。这包括彻底测试不同的情况,使得解决方案尽可能地准确有效。

好的代码对环境友好

可能听上去有点夸张,但好的代码确实以一种不同于实物的方式做到了对环境友好。好的代码会友好地对待软件环境,它不会重复代码,它会做好它应该做的 事,并分解问题。不好的代码会对软件环境产生不良的影响,它会造成代码污染,让项目变得“丑陋不堪”(就像真正的环境污染一样)。

好的代码总是尽可能地精简

好的代码旨在创造优雅的解决方案,做它应该做的事情,不重复代码,并且经过很好地组织。最大的项目膨胀是由于方法重复,组织不良以及分解事物要点的关注点混杂而造成的。好的代码会精简化事情,简化到核心功能,然后合并这些核心功能以建立软件。

综上所述,那些能写出好代码的程序员也是真正的设计师,他们用于创造解决问题最佳方案所遵循的原则,与作为最优秀的设计师所要坚守的原则几乎如出一 辙。好的代码就是经过精心设计、精心雕琢却又不显唐突、持久、易于使用、易于阅读、可管理且又有用的简单代码。好代码与最佳UI和最美家具的生产方式相同,只是很多人没有意识到而已。


作者:小峰

来源:51CTO

相关文章
|
3月前
|
测试技术
软件测试的艺术:从新手到大师
本文旨在通过浅显易懂的方式,引导读者深入理解软件测试的本质与重要性。我们将从测试的基本概念出发,探讨如何设计有效的测试用例,实施不同类型的测试策略,并最终成为一名能够预见潜在问题、优化测试流程的测试大师。无论你是初涉软件测试领域的新手,还是希望提升自己技能的资深人士,这篇文章都会为你提供有价值的见解和实用的技巧。
|
3月前
|
测试技术
软件测试的艺术:从新手到大师的旅程
在软件开发的广阔天地中,测试是确保产品质量的关键一环。本文将引导你走进软件测试的世界,从基础概念到高级技巧,逐步揭示如何通过系统性的测试方法提升软件的稳定性和性能。我们将一起探索测试的重要性、类型、策略以及面临的挑战,并分享如何克服这些挑战,成为一名优秀的软件测试工程师。
|
人工智能 算法 机器人
创意设计师,请不要相信考证无用论!
创意设计师,请不要相信考证无用论!
创意设计师,请不要相信考证无用论!
|
设计模式 程序员 测试技术
|
运维 架构师 程序员
程序员还要写文档,要会吗?不要会吗? | 开发者必读(017期)
最炫的技术新知、最热门的大咖公开课、最有趣的开发者活动、最实用的工具干货,就在《开发者必读》!
940 0
|
程序员
第9章 程序员这群人 《丰富多彩的编程世界》
第9章 程序员这群人 《丰富多彩的编程世界》 丰富多彩的编程世界 作者 陈光剑 第1章 名可名非常名第2章 语言的构成第3章 有趣的编程第4章 编程语言大观第5章 编程语言的组成第6章 编程范式第7章 编程思想第8章 编程心理学第9章 程序员这群人第1...
870 0
|
人工智能 前端开发 JavaScript
如何在工作中自学UI设计
UI设计包括一些设计和软件操作心理学的一个综合岗位。 从设计的岗位的讲: 1.  素描攻底,通俗的讲,主要锻炼你的眼光,比如一个静物的光影,或造型。 实战来讲:整个空白纸,铅笔,每天画个小东西,素描书,书店成堆。
1032 0
|
UED
[译] 人人都是设计师。我们可以的
本文讲的是[译] 人人都是设计师。我们可以的,最近,Jared Spool 的一篇关于 Netflix 的性能工程师竟然才是真正的设计师的文章引起了我的注意 。这是一个挑衅的想法,但也有一定的道理。他的论点是你团队中的每个人(包括性能工程师)都参与到产品设计,而不仅仅是带有「设计」头衔的人。
1362 0

相关实验场景

更多