`

你的代码可以是优雅的,但是还有更重要的

 
阅读更多
转自:http://www.iteye.com/news/24566


引用
软件设计有两种方法:一种是尽可能地简单,这种设计明显没有什么缺陷;另一种是尽可能地复杂,这种设计没有明显的缺陷。
——C.A.R. Hoare,1980年图灵奖讲座

在开发过程中,我的口头禅是: Your code may be elegant, by mine works。我为此而常常受到质疑,也有人反驳我“你不会使用最优方法!”“你在逃避测试!” 为了避免一次又一次地重复解释,我决定阐述下我的观点,仁者见仁,智者见智。

首先,我认为“项目可能会延期,但是代码会更好或更容易维护或更简洁”这句话是有问题的。项目延期,就是未完成,不应该用代码质量会更高作为借口。如果客户要在圣诞节进行推广活动,但你在12月29号才完成项目,即使提供了史上最好的产品,也是毫无价值的。

其次,我们来谈谈“最优方法”这个问题,“最优”是否意味着要写出更易于维护的代码需要更长的时间呢?其实除了大家都知道的《101个最优方法》以外,“最优”的标准是各种各样的。无论你对其进行怎样的定义,“最优方法”对所有程序员来说,应该是一种自然的编程标准。举个最简单的例子,经验丰富的程序员会自然地将变量命名为:$a、$b、 $c等,也能正确地缩进代码行。说得再深入一点,有经验的开发者知道在什么时候、如何提高效率以使得项目能如期完成。虽然 “最优方法”的标准有很多,但这些标准不会令你因此而延长项目时间。这引出我将谈到的下一点——Over-engineering(过度设计,指设计出来的系统比恰到好处要复杂臃肿的多,过度的封装、一堆继承、接口和无用的方法,以及超复杂的xml配置文件)。

像任何经验丰富的程序员一样,我了解那种想为每个项目搭建最好、最灵活、最耐用的系统的心态。但我也了解每个项目都有的商业限制:时间和资金。大多数项目都有明确的截止日期和项目预算,开发者要有意识地去控制项目规模以按时达到目标。你没有任何理由花一周时间,来为一个20行的table表上的数据库查询设置“恰当的”缓存层。多了解实用案例,如果只是为了实现一个页面访客计数器的功能而构建支持多种同时响应请求的XHR框架,是不现实的。要有眼界,这是我最强调的一点,最好的程序员不是精通如何构建最棒的系统的人,而是了解系统不需要的是哪些功能的人。

另外,在软件开发领域,上市时间是商业驱动力,在web应用开发领域,由于其动态性,这点更为明显。当时间成为关键,“最优方法”就是最简单的解决方案。

最后,我们来讨论一下技术债务(指为了匆忙实现一个功能,破坏了现有的程序库,在实现的过程中污染了代码库的设计)。如果在开发过程中,你在某个地方偷工减料了,那么就会产生无法解决的长期存在的技术债务,而且在之后的开发中,任何一个决定,都会受该债务的影响。事实上,在接手商业项目时,明白何时、如何对代码进行简化的能力是很关键的,这也是区分老手和菜鸟的标准。解决技术债务的办法有很多,但应尽量做到不产生技术债务。同样地,过度设计也不可避免地会产生技术债务。

通常人们在谈到技术债务的危险时,并没有包含商业影响。但其实技术债务与实际投资回报率是相对的,因为在许多情况下,早日上市更具成本效益。也有种情况是技术债务与收益同时存在,那么你可以慢慢偿还债务,但这会延长你的项目时间,很可能当你解决完技术债务时,你也失去了市场机会。

作为软件开发者,我们常常认为自己的工作就是开发软件,但其实这只是一种手段,我们的目的是令开发商达到他们的商业目标,你的代码也许很优雅很简洁,但如果不能达到目的,就丝毫没有意义。

英文原文:Your Code May Be Elegant
分享到:
评论

相关推荐

    优雅的代码风格

    例如,通过接口定义服务,实现依赖注入,可以使代码更易于测试和扩展。 注释与文档是提高代码可读性的关键。在C#中,可以使用XML注释来为类、方法等提供文档摘要,这些注释可以通过工具自动生成API文档。良好的注释...

    编程习惯 优雅代码必备

    编程习惯是每位程序员都应该重视并养成的,它们对于编写出优雅、可读性强、易于维护的代码至关重要。本文主要探讨了C/C++编程中的良好习惯,尤其是关于头文件和定义文件的组织结构。 首先,一个典型的C/C++程序通常...

    写出优雅代码(C#)篇[2].

    最后,持续重构代码是保持代码优雅的关键。当有新的需求或改动时,抽出时间进行重构,可以改善代码结构,使其更符合设计原则。利用工具,如Resharper,可以帮助开发者更高效地进行重构工作。 总结起来,优雅的C#...

    写出优雅代码(C#)篇

    【写出优雅代码(C#)篇】探讨的是如何提高C#编程的可读性和维护性,通过遵循一些最佳实践和技巧,使代码更加简洁且优雅。本文由姜敏分享,涉及了多个论题,旨在促进开发者之间的交流和学习。 **论题一:函数越小越好...

    swift-(OC版)总结整理下一个快速开发框架以更优雅的方式写代码

    "swift-(OC版)总结整理下一个快速开发框架以更优雅的方式写代码"这个项目显然旨在为Objective-C开发者提供一个过渡到Swift的桥梁,同时引入了MVVM设计模式来优化代码结构。MVVM(Model-View-ViewModel)是一种广泛...

    软件开发培训之如何编写优雅的代码

    在软件开发领域,编写优雅的代码不仅是一种技术追求,更是确保软件质量和维护性的重要手段。优雅的代码意味着更高的可读性、可维护性和扩展性,这对于个人开发者而言意味着更好的自我提升机会,而对于团队开发来说,...

    springboot+mybatis-plus+swagger2全注释入门demo,让你代码更优雅

    通过阅读和分析这些代码,你可以学习到如何配置SpringBoot的启动类、如何引入MyBatis-Plus依赖、如何配置Swagger2以生成API文档,以及如何使用修改后的代码生成器。此外,你还可以看到如何将主要属性提取到配置文件...

    华为编程规范,让代码更优雅

    【华为编程规范】是指导程序员遵循的一套...遵循华为编程规范,可以使代码更易于阅读、理解和维护,有利于团队协作,降低软件开发的长期成本。对于个人开发者而言,遵守规范也能提升个人编程技能,养成良好的编码习惯。

    一本代码重构的书让代码更简洁

    《重构:改善既有代码的设计》是一本由Martin Fowler所著的经典书籍,专注于讲解如何通过重构技术来提升代码...通过学习和应用书中的原则和技巧,开发者可以不断提升自己的代码质量,创造出更优雅、更健壮的Java程序。

    GitHub Gists:分享代码片段的优雅之道

    - **嵌入Gist到Markdown**:你可以将Gist嵌入到Markdown文件中,以便在README或其他文档中展示代码。 ```markdown ```javascript // 嵌入的Gist代码 function sayHello(name) { console.log(`Hello, ${name}!`)...

    代码之美 代码之美 代码之美 代码之美

    代码之美并不仅仅体现在视觉上的整洁,更在于逻辑的清晰、可读性、可维护性和性能优化等方面。它是软件工程实践中的一种追求,是开发者智慧的结晶。 1. **可读性**:代码之美首先体现在其易读性上。良好的代码结构...

    代码之美(深入解剖代码)

    通过阅读本书,我们可以学习到如何编写更优雅、更高效的代码,从而提高我们的编程技巧。 书中涵盖了一系列编程相关的知识点: 1. **编程思想**:作者阐述了编程不仅仅是解决计算问题,更是一种表达思想的方式。...

    你的代码很烂,我们一起来修改

    根据标题《你的代码很烂,我们一起来修改》和描述“一起来学习一下 看起来很烂的代码 怎么修改的让人赏心悦目”,我们可以推断这将是一个关于代码重构、代码质量提升和编写优雅代码的教程。以下内容将详细介绍如何...

    代码欣赏代码欣赏代码欣赏

    在IT行业中,代码欣赏是一种非常重要的学习和提升编程技能的方式。通过阅读和分析高质量的代码,我们可以了解到优秀的编程实践、设计模式以及最佳编码习惯。在这个压缩包文件中,"src"目录很可能包含了各种源代码...

    修改代码的艺术

    《修改代码的艺术》一书深入探讨了在软件开发过程中如何优雅地进行代码修改,以保持代码的可读性、可维护性和性能。这本书的核心理念是,代码修改不仅仅是修复错误,而是一个提升软件质量的重要环节。以下是一些关键...

    代码阅读技巧-编程能力提高的最有效途径

    代码阅读技巧是编程能力提升的重要环节,它不仅仅是理解一行行代码那么简单,更是深入理解程序...通过深入研究这些内容,结合上述提到的技巧,你可以逐步提升自己的编程能力和代码阅读水平,成为一名更优秀的程序员。

    第一行代码Java源代码等配套资源

    在这些源代码资源中,你可以找到书中各个章节对应的示例程序,涵盖了Java的基础语法、面向对象编程、集合框架、异常处理、IO流、多线程、网络编程等多个方面。通过阅读和运行这些代码,你可以直观地看到Java语言的...

    Head First Python 实例代码

    通过实例代码,你可以理解如何根据条件执行不同的代码块,如何遍历数据结构,以及如何优雅地处理程序运行时可能出现的错误。 函数是代码的复用单元,让你的代码更具模块化。书中会展示如何定义、调用函数,以及如何...

    如何利用Promises编写更优雅的JavaScript代码_.docx

    romise, secondPromise).then(function(firstData, secondData) { // do something with both firstData and secondData ...通过学习和熟练掌握 Promises,你可以提升你的 JavaScript 编程技能,使代码更加健壮和高效。

    PHP代码优化,代码格式化

    代码优化是软件开发过程中的重要环节,对于大型项目而言更是必不可少。 首先,"代码格式化"是优化过程中的基础步骤。良好的代码格式化可以使代码更易读、易理解,从而减少出错的可能性。这包括但不限于遵循一致的...

Global site tag (gtag.js) - Google Analytics