`
bugtags
  • 浏览: 28460 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

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

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

图片

好的代码是创新性的

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

好的代码让软件有用

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

好的代码具有审美趣味

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

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

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

好的代码不唐突

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

好的代码言行一致

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

好的代码是持久性的

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

好的代码周密详尽

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

好的代码对环境友好

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

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

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

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

译文链接:http://www.codeceo.com/article/why-good-programmer-good-desinger.html
英文原文:Why Good Programmers are Good Designers
翻译作者:码农网 – 小峰

分享到:
评论

相关推荐

    程序员设计师模板.zip

    "程序员设计师模板.zip"这个压缩包文件显然为那些希望提升这方面能力的人提供了宝贵的资源。下面我们将深入探讨相关知识点。 首先,"设计师模板.docx"可能包含了一系列的设计模板,这些模板可能涵盖了网页设计、...

    系统架构设计程序员向架构师转型之路

    在这个过程中,持续学习、拓宽视野、提升沟通能力和业务理解,都将有助于程序员逐步成长为一名优秀的架构师。通过阅读"系统架构设计程序员向架构师转型之路.pdf"这本书,读者可以更深入地了解这个过程,获取实用的...

    程序员软件设计师考题

    【程序员软件设计师考题】 在IT行业中,程序员和软件设计师是两个至关重要的角色。他们不仅是技术的实践者,更是创新的推动...同时,这些知识点也对日常工作有着深远的影响,是成为优秀程序员和软件设计师的必备条件。

    优秀程序员45个习惯

    【优秀程序员45个习惯】是一本旨在提升程序员专业素养的书籍,由敏捷开发领域的权威Venkat Subramaniam和Andy Hunt共同撰写。这45个习惯覆盖了态度、学习、开发流程、用户、编程以及团队协作等多个方面,旨在帮助...

    java程序员到架构师之路.pdf

    《敏捷软件开发原则、模式与实践》Uncle Bob 的名著,敏捷的经典名著,这本书比较特别,与其说是讲软件开发过程的书,不如说讲软件架构的书,本书,让你知道框架为什么要这样设计,这样你的层次可以晋升到框架设计者...

    系统设计师(高级程序员)教程.pdf

    通过阅读《系统设计师(高级程序员)教程》,读者可以全面提高自己的系统设计能力和高级编程技能,为成为一名优秀的系统设计师奠定坚实基础。无论你是初入行业的新人,还是寻求提升的资深开发者,这本书都能提供宝贵的...

    成为优秀程序员的 101 个技巧

    "成为优秀程序员的 101 个技巧" 本资源为程序员提供了 101 条实用的技巧,从搜索问题答案到编写有用的注释,从承诺不足到超额交付,从寻找导师到成为导师,从适当命名变量到删除不用的代码,从学习阅读代码到建立...

    如何成为一名优秀的程序员.docx

    2. 学习力量:学习力量强是成为优秀程序员的魔法。 3. 聪慧和虚心:高智商与优秀程序之间没有亲密的关系,需要充分理解一个一般的程序,你得有很强的吸取详情的力量并同时消化它们。 4. 求知欲:在成长为高手的...

    程序员.zip

    《程序员之路:软件设计师历年真题解析》 在IT领域,程序员是一类不可或缺的专业人才,他们用代码...同时,对于已经工作的程序员来说,这也是一种自我提升,帮助他们在职业生涯中不断进步,成为一名优秀的软件设计师。

    设计师web简历模板下载是一款适合程序员 设计师 工程师的CSS3简历模板下载。_html网站模板_网页源码移动端前端.rar

    在IT行业中,简历是展示个人技能和经验的重要工具,尤其对于程序员、设计师和工程师这样的专业技术人员来说更是如此。本文将详细解析一款专为这些职业设计的Web简历模板,该模板基于CSS3技术,同时结合了HTML和...

    《程序员》2011年08期

    激情是一个优秀程序员的重要指标。 2,自学好学 编程领域始终发展变化着,不出一年有些新技术就变成了老技术,这并不是说好的程序员要对所有新技术跟进,但有些却对学习任何新技术都没有兴趣。他们通常在学校学习了...

    java程序员发展前景

    在技术路线上,java 程序员可以从初级程序员逐步晋升为高级 java 程序员、系统分析师、架构设计师等高端职位。在这个过程中,需要不断地学习和掌握新的技术,保持自己的技术优势和竞争力。 在管理路线上,java ...

    java程序员到架构师之路

    Java程序员到架构师之路是一个循序渐进的学习过程,涵盖了从基础编程技能到高级系统设计与管理的广泛领域。在这一转变过程中,开发者需要不断提升自己的技术深度和广度,掌握更多的软技能,以及对业务的理解。以下是...

    优秀的PHP程序员至少应该了解PHP代码的优缺点

    11. 项目管理和团队协作:具备良好的沟通能力和团队协作精神,能够在项目中扮演积极的角色,与设计师、项目经理和其他开发人员有效配合。 12. 持续集成和自动化:了解并实践持续集成,自动化测试和部署流程,以提高...

    java程序员参考求职简历

    Java程序员在求职过程中,一份优秀的简历是至关重要的。简历不仅体现了候选人的专业技能,还展示了他们的个人特质和项目经验。以下是一些关于如何构建一份出色的Java程序员求职简历的知识点: 一、个人信息 简历的...

    程序员道路的十个层次

    《程序员道路的十个层次》是一份深度探讨程序员职业生涯发展的文档,旨在帮助程序员明确自我定位,规划职业路径。这篇文档从入门新手到顶尖专家,详细描绘了程序员在技术成长过程中的十个不同阶段,每个阶段都有其...

    程序员的羊皮书——程序员必备

    与产品经理、设计师和其他非技术人员的有效沟通,可以帮助程序员更好地理解项目目标,从而编写出满足需求的代码。 在职业规划上,程序员可以考虑专业化发展,如成为后端开发者、前端开发者或移动应用开发者;也可以...

    如何成为一个优秀的JSP 程序员

    提高沟通技巧,理解需求,合理安排任务,与设计师、测试人员和项目经理有效交流。 总之,成为优秀的JSP程序员需要全面而深入的技术知识,同时也需要不断学习和适应新环境的能力。通过实践项目、参与开源社区,你...

    多媒体应用设计师真题(200505-201005)

    在实际工作中,多媒体应用设计师往往需要与其他团队成员合作,如UI/UX设计师、程序员、产品经理等。因此,了解项目管理方法,如敏捷开发、Scrum框架,以及有效的沟通技巧,对于项目的成功至关重要。 五、创新与趋势...

    <卓有成效的程序员>

    在团队协作中,程序员需要与设计师、产品经理、测试人员等进行频繁交流。清晰、准确地表达自己的想法,理解他人的需求,以及用非技术语言解释技术问题,都是提升协作效率的关键。此外,良好的文档编写习惯也是沟通的...

Global site tag (gtag.js) - Google Analytics