商業項目中代碼質量是否重要?

這是一篇比較老的 文章,但是文中的這些問題在現在仍然普遍存在。代碼質量的高低與商業產品的優劣是否有直接的影響?開發者Frank Sommers在文中給出了他的看法。文章內容如下。

在大多數商業項目中,代碼質量并不被看重,因為大部分情況下,代碼不是整個項目的最終產品,客戶最終使用的是二進制文件,而不是源代碼。相比代碼質量,開發流程、進度和技能更能決定產品最終的質量。

在現實生活中,我幾乎從來沒有遇到一個對他所工作的代碼完全滿意的商業軟件開發者。相反,我甚至認識到, 開發者對其所工作的代碼的滿意度與代碼給老板所創造的價值成反比關系。

我的一個朋友在世界上最大、最賺錢的數據庫公司的核心服務器組件部門工作,他時常感嘆龐大的代碼庫中那些丑陋的命名約定,對于開發者來說,很難在這些代碼的基礎上開始工作。但是,不可否認, 就是這些丑陋的代碼庫為該公司創造了高達數十億美元的收入。

不幸的是,開發者一邊感嘆著代碼質量,一邊還不得不繼續做這項奇怪的、與眾不同的工作。 說這項工作與眾不同,是因為用戶不能從最終產品中直接看到你的付出。如果你是一個音樂家,你可以根據自己的喜好來塑造每一個音符和樂句,并直接呈現給聽眾。如果你是一個木匠,你的產出是實際的椅子或櫥柜。

但是作為一名開發者,除了你工作的開發環境和開發團隊外,你幾乎沒有留下什么東西。客戶看到的是二進制文件,而不是你的源碼。 除非你的產品是開源的,或者包含源碼文件,否則,除了開發團隊的人外,幾乎沒人看到或者關心這些代碼,而你每天在這些代碼上花費了大量寶貴的時間。

大多數編譯器也不關心代碼的質量,比如,變量如何命名、方法是否簡潔、對象模型是否清晰、甚至不管你使用了什么算法,編譯器對這些都沒有興趣, 無論代碼是優雅還是丑陋,都能創建出效果相同的二進制文件。比如,當你閱讀這篇文章時,你根本不會考慮當前頁面源代碼的質量。

當然,作為開發者,我們必須關心代碼質量,因為我們每天要花費大部分的時間來與這些代碼打交道。而且, 作為一個合格的開發者,我們應該努力打造和維護一個高質量的代碼庫。

我們花費大量時間來打造更高質量的代碼,我們通常會說現在所做的工作將會在一段時間后帶來更多的商業利益,以此來體驗我們所做的努力。但是,代碼質量很少直接導致任何可衡量的商業投資回報。比如我那位在數據庫公司工作的朋友的例子,他認為這些代碼丑陋不堪、難以閱讀,但是依然能夠很好地創造利益。 該公司專注的是產品的整體質量,而不是代碼的質量。

總體產品的質量,不是通過改善單一活動的質量就能提升的。 開發者測試、敏捷開發方法、QA(質量保證)、CI(持續集成),這些所有的流程保證了最終高質量的產出。代碼質量只是其中的一小部分。商業軟件公司往往會更專注于產生高質量產品的過程,因為這比起強調代碼質量來說,能獲得更好的回報。

通常來說,產品經理很清楚以上這些內容。但是對于開發者來說,必須日復一日地工作在他們認為“丑陋”的代碼基礎上。這意味著,開發者注定一直無法對他們所工作的代碼的質量感到滿意。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450235.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450235.shtml
英文地址,請注明出處:http://en.pswp.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;因為程序員已經成為社會的主流打工群體。但是程序員實際在公司里往往是最不受…