商业项目中代码质量是否重要?

这是一篇比较老的 文章,但是文中的这些问题在现在仍然普遍存在。代码质量的高低与商业产品的优劣是否有直接的影响?开发者Frank Sommers在文中给出了他的看法。文章内容如下。

在大多数商业项目中,代码质量并不被看重,因为大部分情况下,代码不是整个项目的最终产品,客户最终使用的是二进制文件,而不是源代码。相比代码质量,开发流程、进度和技能更能决定产品最终的质量。

在现实生活中,我几乎从来没有遇到一个对他所工作的代码完全满意的商业软件开发者。相反,我甚至认识到, 开发者对其所工作的代码的满意度与代码给老板所创造的价值成反比关系。

我的一个朋友在世界上最大、最赚钱的数据库公司的核心服务器组件部门工作,他时常感叹庞大的代码库中那些丑陋的命名约定,对于开发者来说,很难在这些代码的基础上开始工作。但是,不可否认, 就是这些丑陋的代码库为该公司创造了高达数十亿美元的收入。

不幸的是,开发者一边感叹着代码质量,一边还不得不继续做这项奇怪的、与众不同的工作。 说这项工作与众不同,是因为用户不能从最终产品中直接看到你的付出。如果你是一个音乐家,你可以根据自己的喜好来塑造每一个音符和乐句,并直接呈现给听众。如果你是一个木匠,你的产出是实际的椅子或橱柜。

但是作为一名开发者,除了你工作的开发环境和开发团队外,你几乎没有留下什么东西。客户看到的是二进制文件,而不是你的源码。 除非你的产品是开源的,或者包含源码文件,否则,除了开发团队的人外,几乎没人看到或者关心这些代码,而你每天在这些代码上花费了大量宝贵的时间。

大多数编译器也不关心代码的质量,比如,变量如何命名、方法是否简洁、对象模型是否清晰、甚至不管你使用了什么算法,编译器对这些都没有兴趣, 无论代码是优雅还是丑陋,都能创建出效果相同的二进制文件。比如,当你阅读这篇文章时,你根本不会考虑当前页面源代码的质量。

当然,作为开发者,我们必须关心代码质量,因为我们每天要花费大部分的时间来与这些代码打交道。而且, 作为一个合格的开发者,我们应该努力打造和维护一个高质量的代码库。

我们花费大量时间来打造更高质量的代码,我们通常会说现在所做的工作将会在一段时间后带来更多的商业利益,以此来体验我们所做的努力。但是,代码质量很少直接导致任何可衡量的商业投资回报。比如我那位在数据库公司工作的朋友的例子,他认为这些代码丑陋不堪、难以阅读,但是依然能够很好地创造利益。 该公司专注的是产品的整体质量,而不是代码的质量。

总体产品的质量,不是通过改善单一活动的质量就能提升的。 开发者测试、敏捷开发方法、QA(质量保证)、CI(持续集成),这些所有的流程保证了最终高质量的产出。代码质量只是其中的一小部分。商业软件公司往往会更专注于产生高质量产品的过程,因为这比起强调代码质量来说,能获得更好的回报。

通常来说,产品经理很清楚以上这些内容。但是对于开发者来说,必须日复一日地工作在他们认为“丑陋”的代码基础上。这意味着,开发者注定一直无法对他们所工作的代码的质量感到满意。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Class is not a root resource. It, or one of its interfaces must be annotated with @Path:

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 报错如题: Class is not a root resource. It, or one of its interfaces must be annotated with Path:XXXX 这是一个dub…

Equation漏洞混淆利用分析总结(下)

样本三 如下所示在该样本中,使用了Ole10Native的流,因此没有equative head,默认读取红框中的4位长度。之后的metf head为01. 可以看到metf head的长度为01时,直接进入到if判断中(该if中的函数实际是一个异常处理函数,但…

闲扯工程师的版本管理概念

如果你所在的公司还在通过qq给客户发sdk升级包等,你可以考虑换一家公司了。

resource fork, Finder information, or similar detr

1.关闭当前项目和Xcode 2.打开终端或者iterm cd ~/Library/Developer/Xcode/DerivedData/ 3. xattr -rc . 4.重新打开项目 5.如果不行那你就再试试其他的办法吧,我就是这样弄好的 如果有需要装系统的话可以看一下我自己封装的系统,原装系统无精简&#x…

5 个常用的软件质量指标

在软件开发中,软件质量是衡量软件是否符合需求、标准的重要体现。除了 代码质量外,影响软件整体质量的因素还有很多。因此,要确保软件的整体质量,就需要在各个环节严格控制。本文列出了衡量软件质量的5个最常用的指标。1. SLOC&a…

介绍一个对陌生程序快速进行性能瓶颈分析的技巧

前言 工作多年,一直做的是curd系统。前几年做的系统应用场景,大多对数据库依赖比较重。例如报表统计,数据迁移,批量对账等。所以这些系统出现性能瓶颈一般出在数据库操作上面。 如果程序因为数据库操作出现性能瓶颈是比较好办的&a…

[WARNING] The POM for XXX-system:jar:1.9.0-SNAPSHOT is missing, no dependency information available

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 在 git-bash 中 想要启动一个工程服务就是不成功,始终提示jar包找不到,本地代码已提交。 这时可直接登陆git&am…

关于tcp网络通讯的几个场景的小测试

以下场景基于阻塞式IO 发送端向接收端快速的发送数据,接收端如果不接受或者很慢速的接受会发生什么情况。 发送端快速向接收端发送大量数据,然后立即退出,接收端会发生什么情况。

测试一体机ASM failgroup的相关问题处理

环境:3台虚拟机 RHEL 7.3 Oracle RAC 11.2.0.4问题现象:RAC运行正常,ASM磁盘组Normal冗余,有failgroup整体故障,有failgroup配置错误。温馨提示:本文并不是市场上任何一款商业的一体机产品,只是…

掌握穷变富的12条原则 迅速从普通人变成有钱人

“穷忙”和“富闲”是对立面,“穷”对“忙”,“富”对“闲”,很多“穷忙女”是在拿青春当赌注,希望自己今天的“美丽”明天就能在市场上有个不错的“回报”;而多数“富闲女”则是在拿智慧当筹码,既不可替代…

com.alibaba.dubbo.rpc.RpcException: Forbid consumer 192.168.184.1 access service com.foreveross.syst

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 报错如下: com.alibaba.dubbo.rpc.RpcException: Forbid consumer 192.168.XXX.1 access service com.XXX.system.service.…

动手又动脑

1.编写一个程序,指定一个文件夹,能自动计算出其总容量。 import java.io.File; import java.io.IOException; public class FileEdit { double size0.0; //计算文件或文件夹的大小,单位MB public double getSize(File file){ //判断文件是否存…

windows下安装和设置gradle

一、安装前检查 检查jdk是否已经安装 二、下载gradle 1. https://gradle.org/releases/ 2.设置gradle环境变量 3. 环境变量中增加名为GRADLE_HOME的变量名,值为Gralde的解压路径,例如D:\Gradle 在path的后追加%GRADLE_HOME%\bin; 4. 验证 5.修改默认缓存目录 修改Gradle默认缓存…

智能硬件的时代,嵌入式是否已经日薄西山

存吐吐槽,智能硬件现在很火热,导致很多人以为嵌入式行业又迎来了春天,可是明白人都知道,智能硬件核心在智能,硬件是很次要的。目前的硬件产品,要有亮点,都和智能沾边,已经不是那个可…

赚大钱一定要选择

赚大钱一定要选择 八大赚钱定律让你赚翻天 许多人看起来已经步入小康了,但他们还说不上是真正的富人,从科学理财的观念看,凭高收入和攒钱来实现富裕的思路完全是错误的,依靠攒钱,不仅多数人无法获得最终的财务自由&…

深解微服务架构:从过去,到未来

http://www.uml.org.cn/zjjs/im... 微服务的诞生 微服务架构(MicroserviceArchitect)是一种架构模式,它提倡将单块架构的应用划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立…

解决IntelliJ Idea中文乱码问题、修改IDEA编码

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 有两种办法可以修改 IntelliJ IDEA 的文件编码(IDE 版本为 14.1.4) File->Settings->Editor->File En…

前端框架开始学习Vue(一)

MVVM开发思想图(图片可能会被缩小&#xff0c;请右键另存查看&#xff0c;图片来源于网络)定义基本Vue代码结构1 v-text,v-cloak,v-html命令默认 v-text没有闪烁问题&#xff0c;但是会覆盖元素中原本的内容&#xff0c;插值表达式只会替换自己的占位符,<!DOCTYPE html> …

Android App图片轮播效果的组件化

简介 一个通用的图片轮播效果的通用组件&#xff0c;方便开发者快速集成。 初学者&#xff0c;其实应该实现一个自定义控件的&#xff0c;改天有空&#xff0c;在学习下吧&#xff0c;学习能力一般&#xff0c;以前也没写过java&#xff0c;这个组件都写了好久&#xff0c;惭愧…

天下IT:程序员能挣哪些外快?

各位朋友&#xff0c;大家好&#xff01;欢迎收看《天下IT》。 今天我们给您讲讲程序员&#xff0c;坦率的说世界上的程序员基本跟我手里的帽子一样遍地都是&#xff0c;各种各样的程序员&#xff0c;因为程序员已经成为社会的主流打工群体。但是程序员实际在公司里往往是最不受…