成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

好代碼不值錢 不是嗎?

開發(fā) 前端
本文是從 Good code is cheap code 這篇文章翻譯而來。當我跟做開發(fā)的同事說出這話時,他們的第一反應是一種驚愕,然后是將近一個星期的嘲笑,把它當作一個笑話來講。當他們走近看我的表情、知道我是認真的時,才收斂一點。

長久以來我一直主張:好代碼是廉價的代碼。

[[20007]]

當我跟做開發(fā)的同事說出這話時,他們的第一反應是一種驚愕,然后是將近一個星期的嘲笑,把它當作一個笑話來講。當他們走近看我的表情、知道我是認真的時,才收斂一點。

當最初的驚愕消退后,他們會用一些這樣的話來反駁:“好代碼不廉價,好代碼是采用經過數十年計算機科學研究和積累得出的最佳實踐設計模式和方法論建立起來的精心制作的程序代碼。”

我只好繼續(xù)解釋為什么他們給出的好代碼的定義有問題的原因是(這是很多開發(fā)人員都忽視了的一個原因):知曉各種設計模式,框架,技術技巧只是事情的一方面,而知道何時該、何時不該應用他們才是更重要的問題。在不知道一種技巧方式如何能對系統的開發(fā)有幫助的情況下,這種模式方法極有可能成為一種開發(fā)的阻礙,而不是一種有益的幫助。

我還要解釋說,我所說的“廉價的代碼”是指這些代碼只需要很少的人/天數就能開發(fā)出來,并不是說是由沒有經驗的開發(fā)人員、在很少的工資報酬下、用6個月封閉式、只有烤白薯和豆腐湯可吃的環(huán)境中開發(fā)出來的東西。

但是…設計模式畢竟是個好東西…不是嗎?

當然,但它們好在哪里?它們能提供什么好處?

◆容易維護

◆產品更健壯

◆容易理解

◆易于日后的改進提高

◆更好的可跟蹤性

你會發(fā)現所有的這些最終都落到一點上:從長期的角度看,它們能讓你更快的做事情。這事情有可能是系統遷移,或是增加一個新功能,不論是什么,通過運用這些方法模式,你會在時間效率上獲得實實在在的好處。

這么說,我們觀點一致嗎?

怎么說呢,讓我給你們說個例子,我們看看實現它的幾種方式。

系統

用PHP創(chuàng)建一個發(fā)郵件的表單,表單里有幾個表單項,用郵件把這些數據發(fā)送給某個人。除此之外,表單里的內容還要存入MySQL數據庫里。

現在,用什么方式實現它們最好?按照傳統的說法,采用最好的實踐設計模式,你可能會想到這些:

◆MVC

◆N-層設計,包括數據庫抽象層

◆對象關系映射(ORM)

◆可能用到的框架

◆XML配置和相關模型

◆等等.

我可以說,這簡直是瘋了,客戶的這些需求完全可以用10幾行代碼、一個小時里(包括測試時間)完成,而且所有的那些方法模式所希望達到的效果(諸如可讀性,可移植性,穩(wěn)定性)都有了。如果使用上面列出的那些,反而真正的會達不到這個目標,使代碼復雜化,難于理解和維護修改。

那現在,假設客戶又來了,要求做一些改動,比如要增加一個管理員的界面。這樣的話,你就勝利了,你已經實現了很多很有用處的東西;然而這是因為你在第一次開發(fā)這個系統時付出了很大的代價。我要向你聲明的是,即使我現在把這些簡單的代碼進行重構,增加一些簡單的業(yè)務層,也仍然比按你要求的那種過度技術化的初始實現方案要簡單的多。

再說了,如果客戶要求的只是在表單里增加一個屬性,那你的N-層設計方案會讓你痛苦不堪,因為你需要改動各個層,包括那些CRUD代碼。

SCRUM

我發(fā)現Scrum能吸引我的最大一個原因是它能迫使你敏捷開發(fā);它能迫使你在每個Sprint結束的時候把東西都實現、發(fā)布。它不會讓你做出目前用不到的多余的東西;它不會允許你在實現東西上有任何所謂“正確方式”的奢侈行為。

相反,在你需要的時候你才去重構。當然,這會有一定的風險,因為在實現某些功能上你會花去比當初已經做了一些基礎工作的情況下要更長的時間。然而,產品開發(fā)就像是一個沙漠中四處漂移的沙丘,你永遠不可能準確的知道一個產品在將來會做如何的改動。所有的你花在實現這些很有吸引力的各種模式上的時間很可能會成為一種完全的浪費。

復用性

有些人會指出,我所說的方式產生的代碼不具有太多的復用性,不能在新開發(fā)的一些其它系統中使用。我對這個問題的回復就是,在根本不知道某些東西是否/如何/在哪將會被復用的情況下去設計一個可復用的東西,這就跟去實現一些你根本用不到的功能或你的應用里跟本用不到的功能一樣愚蠢而糟糕。如果你有一個清楚的遠見,知道什么地方會復用這些東西,這就不同了,因為你確實有一個內部的業(yè)務需求在指導你正確的開發(fā)方向。

我的最后的思考…

◆了解你的設計模式,知道它們各自的好處(我一直認為,好的程序員和偉大的程序員之間的區(qū)別就在于偉大的程序員理解他們的模式);

◆讓你的代碼廉價:

   ◆當模式能夠給你帶來好處,而且為你省時時才去使用它們;

   ◆如果不是這樣就不要使用它們(例如:想想你最近的一次為什么要把系統遷移到一個不同的數據庫上?);

   ◆當框架能夠幫你提高開發(fā)速度時才使用它們;

◆在必要的時候重構,不要做一些超前性的開發(fā);

我想,如果你能按照這些指導原則做事,你會發(fā)現開發(fā)周期變短、實現的代碼更簡潔,易于調試,易于維護修改。

原文鏈接:http://www.aqee.net/2011/03/16/good-code-is-cheap-code/

【編輯推薦】

  1. 揭秘:Facebook如何發(fā)布代碼
  2. 25個不錯PHP的游戲編程腳本代碼分享
  3. 程序員應該具備的11項基本技能
  4. .NET程序員是否應該放棄VB.NET?
  5. 在西方程序員眼里 東方的程序員是什么樣的?
責任編輯:陳貽新 來源: IT外刊評論
相關推薦

2021-09-18 09:52:07

AI 數據人工智能

2017-06-14 18:51:29

Web前端工作經驗

2018-04-04 11:55:29

App隱私移動互聯網

2020-12-04 12:32:34

喬布斯程序員思維

2020-10-24 18:30:19

微信支付賬戶移動應用

2022-12-28 15:35:58

馬斯克推特

2021-11-26 10:43:35

程序員技能開發(fā)者

2021-11-09 23:08:20

iPhone手機安卓

2015-09-15 09:08:58

前端程序員高薪

2013-03-12 10:36:51

2013-03-26 11:20:05

創(chuàng)業(yè)創(chuàng)業(yè)者創(chuàng)業(yè)失敗

2022-07-09 20:35:23

數字化企業(yè)轉型

2017-03-09 19:16:56

2022-05-07 10:01:20

好代碼壞代碼

2020-11-20 08:36:59

Jpa數據代碼

2015-04-15 15:01:56

代碼好代碼科學定義

2015-03-25 09:38:09

Android谷歌

2013-03-04 10:08:57

Android路由器路由功能

2020-12-04 15:07:44

比特幣區(qū)塊鏈技術

2016-08-25 17:46:31

代碼組織CRM
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 美女午夜影院 | 欧美黑人国产人伦爽爽爽 | 伊人伊人伊人 | 欧美一区二区在线 | 一级无毛片| 99精品久久久 | 可以免费观看的av | 国产探花在线精品一区二区 | 亚洲视频免费播放 | 久久三级影院 | 精品久久久久一区二区国产 | 欧美一区免费在线观看 | 国产高清精品网站 | 国产精品成人在线 | 亚洲一区二区三区在线免费观看 | 欧美精品一区二区免费 | 国产美女一区二区 | 色悠悠久 | 久久久久久久久久爱 | 蜜桃av一区二区三区 | 成人在线视频免费观看 | 成人午夜视频在线观看 | 国产在线拍偷自揄拍视频 | 日韩欧美国产一区二区 | 亚洲欧美中文日韩在线 | 国产成人精品一区二区三区 | 一区二区三区欧美大片 | 成人18亚洲xxoo | a在线视频观看 | 成人欧美一区二区三区 | 国产午夜亚洲精品不卡 | 成人做爰9片免费看网站 | 国产在线观 | 日日夜夜天天 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 99久久精品免费 | 欧美激情视频一区二区三区免费 | 蜜桃视频成人 | 色免费在线视频 | 日韩视频一区 | 久久久亚洲 |