人妻夜夜爽天天爽三区麻豆,国产91在线拍揄自揄拍无码九色,欧美精品色婷婷五月综合三级,在线免费不卡无码不卡

您好,歡迎來到江蘇.南通康海機床有限公司官網!我公司主要生產公司主要生產“康海”牌系列:QC12Y-系列液壓擺式剪板機;QC12K-系列數控液壓剪板機;QC11Y-系列液壓閘式剪板機;WC67Y-系列液壓折彎機;WC67K-系列數控折彎機;W11-系列機械對稱式卷板機;W11S-系列液壓萬能式卷板機;開卷校平生產線;QH11系列剪板機等產品。 收藏本站  |  網站地圖
全國咨詢熱線:13962924488 康經理
當前位置: 首頁 »新聞資訊新聞動態

新聞資訊/ News

程序員須記住:不是所有的代碼都值得編寫
來源: 點擊數:2177次 更新時間:2018-07-06 14:09:29

 

  當你手里有把錘子的時候,看所有的東西都是釘子。有時候程序員往往會陷入為了寫代碼而寫代碼的怪圈,沒有意識到代碼是為了解決現實問題的。當問題有更簡便的解決方案時,寫代碼未必就是必須。記住:你不是別人花錢讓你在屏幕上寫字符的程序猿,而是讓你解決問題的專業人士。Fagner Brack 的總結非常有見地。


  錘子擺在一塊木板上。木板有一顆被錘彎的釘子。程序員似乎已經忘記了軟件的真正目的是什么,是解決現實世界的問題。50 年前的 1968 年開過一場會,會議名字叫做軟件工程工作會議,是有 NATO 科學委員會贊助的。那時候大家已經開始注意到軟件日益成為社會的基礎。然而,軟件也變得太難以理解。在那次會議之后,變成開始變成一個行業。軟件開始擺脫商業人士的控制。


  不管軟件此后走上了什么樣的發展道路,仍然存在著業務與軟件開發(或者按照那次會議首次的說法,“工程”)分離的問題。如果開發者太過狹隘地專注于開發,就會錯過了他們編寫的軟件背后的目的。以至于可能會看不到并不需要編寫任何代碼的潛在解決方案。


  舉個例子:有一家初創企業是做設備的,這種設備可以讓人利用藍牙解鎖開門。跟這種設備進行通信的可視化界面是一個小程序,就算是門鎖上它也能看見。這個玩意兒有一個按鈕叫做 “開門”。當用戶接近房子時,他們會拿出手機,找到那個小程序,然后點擊按鈕開門。有人看過這套流程之后問道:如果我們用的是藍牙并且假設拿著這部手機的任何人都能進入房子的話,為什么還需要讓某人拿出手機然后按按鈕呢?當它檢測到設備距離在 1 米之內時讓們打開不就行了嗎。這樣我們就不用付出設計和編寫可視化界面的成本了!


  這個藍牙應用的故事是聚焦過窄的絕佳例子:目標是用盡量方便地開門。如果傳感器是無線的話設計可視化界面毫無意義。如果你意識到企業想要實現什么以及對用戶的價值是什么的話,你可以將哪方面的知識跟你對技術可能做到什么的知識融為一體。只有這樣你才會具備足夠的信息來想出更好的答案并且得出結論說界面對產品來說毫無必要。


  這是一個解決編程問題的出色例子——除了編寫解鎖功能以外再無編寫任何額外代碼之必要。然而,就像技術債務一樣,任何東西都不應該用來作為編寫垃圾代碼的借口。


  不是所有的代碼都值得編寫


  有時候,修補重大 bug 未必是優先事項。假設你是加密數字貨幣交易所,如果你的系統允許出現一次賬戶副本的話,人為干預會是成本效益佳的解決方案——如果修補漏洞的代價很大的話。


  嚴重性于優先級之間的權衡讓我想起了同事近給我看過的一種模型。這個模型叫做優先級矩陣這是一個二維模型,可用于確定 bug 的優先級,其根據是影響到的用戶數以及嚴重性。


  二維優先級矩陣圖示。Y 軸表示受影響的用戶,分別包含 “一個”、“一些” 以及 “全部” 這些值。X 軸表示 “嚴重性,值包括 “界面性”、“造成不便” 以及 “無法工作”。Bug 的優先級多少要取決于它在坐標上的位置。比方說,如果 ug 是界面性的而且僅影響到一個用戶的話,則優先級為 4;如果 bug 讓某人無法工作而且影響到一些人的話,則優先級為 1;如果 bug 導致所有人都無法工作的話,則優先級為高,0。


  前面說過的單賬戶副本問題算是影響了一個用戶的使用便利性這類,因此其優先級為 3。


  不是所有的 bug 都值得修復


  開發者想給一切都寫腳本是非常常見的。然而,一些重復性的任務未必值得自動化。如果你打算隱藏一些有關底層命令如何工作的基本知識的話,就不需要花時間去寫腳本了。服裝復雜邏輯和抽象有用知識之間是有區別的。有時候,信息應該明確表示方便理解。如果你對信息進行了抽象的話,可能反而產生相反效果并且難以理解。


  在 CLI 里面使用一些類型的低級命令而不是抽象了知識的高級命令(如 Git aliases)會更有用。


  并不是所有的命令都值得寫腳本


  幾年前我用 Incremental Delivery 做了一個項目。這是一個身份驗證系統,系統會讓用戶提交一些個人數據,讓第三方提供商進行驗證。團隊想要開發一個非常棒的字段驗證功能。然而,驗證這個功能每次 sprint 計劃都被列到低優先級的位置,眼看著截止期限越來越近了。到后,團隊發現這項功能根本就沒有必要。


  原因是:驗證是必須的!


  提供合法信息關乎用戶的利益。如果用戶提供的數據是錯的,驗證就不會通過也就無法使用系統。此外,大多數瀏覽器都支持標準的 HTML 驗證,這已經足夠了。糟糕的情況下,本人無法驗證通過的用戶會打電話給支持進行人工驗證。


  不是每一項功能都值得編寫


  作為開發者,如果你理解了自己試圖要解決的問題的話,你就能想出更好的代碼,甚至有時候根本不需要編碼。你不是別人花錢讓你在屏幕上寫字符的程序猿。你是別人花錢來幫忙解決問題的專業人士。不過,如果試圖不經思考只想用技術解決每一個問題,就好像把代碼當成銀彈的話,你就很難理解什么東西對客戶有價值,也很難想出很好的點子。你的目的以及所寫代碼的目的都是為了產生價值,讓世界更美好,而不是為了滿足你以自我為中心的世界觀。


  有句話是這么說的:“當你手里有把錘子的時候,看所有的東西都是釘子。”好還是先有顆釘子這樣你才會考慮需要一把錘子。也就是說,如果你本來就需要釘子的話。

【刷新頁面】【加入收藏】【打印此文】 【關閉窗口】
上一篇:我國2018年剪板機技術未來發展趨勢 下一篇:帶你認識數控折彎機歷史

熱門產品 / Hot Products

WC67Y125T4000液壓補償折彎機
135T4000不銹鋼專用折彎機
WC67Y-400T6000液壓板料折彎機
聯系康海機床
全國咨詢熱線

13962924488

電話:0513-88289578

傳真:0513-88219998

郵箱:ntkanghai@163.com

地址:江蘇省海安市李堡工業園區