掌握5 個基本概念,讓你寫出好Code - INSIDE

文章推薦指數: 80 %
投票人數:10人

我相信能建立一種心態架構,是能超越任何語言和函式庫,讓人一開始就能產生好的程式碼。

這裡提出5 點概念,記住這些原則,寫出好的程式碼將非難事。

集團資訊 關於我們 集團介紹 我們的團隊 旗下媒體 關鍵評論網 everylittled. INSIDE 運動視界 Cool3c 電影神搜 未來大人物 歐搜哇 商益 旗下節目 多元服務 Ad2 Taketla拿票趣 關鍵議題研究中心 Cr.ED ShareParty 達思智能科技 士奇傳播 與我們合作 內容行銷與廣告業務 異業合作 原創內容暨內容媒體業者合作 加入我們 新聞中心 趨勢 掌握5個基本概念,讓你寫出好Code 2016/07/05 Mia 架構 、應用技術 、軟體 、工程師 、工作技巧 、程式 、心態 、原則 、程式設計 我相信能建立一種心態架構,是能超越任何語言和函式庫,讓人一開始就能產生好的程式碼。

這裡提出5點概念,記住這些原則,寫出好的程式碼將非難事。

評論 評論 原文為《Writinggoodcode:howtoreducethecognitiveloadofyourcode》,作者為軟體開發自由工作者 ChristianMaioliMackeprang。

Inside獲授權編譯。

Bug少、表現好、易於更改。

好的程式碼影響深遠,而且大概是大家公認高效率開發者背後的重要因素之一。

儘管如此,新手還是很難理解什麼是好的程式碼,大部分的相關文章會有整理很多沒有前後因果的小秘訣,但新手開發者怎麼可能全部背起來?比如說,光是這本程式領域的經典《軟體建構之道》(CodeComplete),就有960頁這麼厚。

我相信能建立一種心態架構,是能超越任何語言和函式庫,讓人一開始就能產生好的程式碼。

這裡提出5點概念,記住這些原則,寫出好的程式碼將非難事。

1.避免特立獨行的程式碼當你看到文章談到新技巧,瞬間驚為天人,一定忍不住就想用來寫些聰明的程式碼來讓你的同事眼睛一亮。

問題是,其他人其實只想把bug修好,然後繼續處理其他事。

所謂的聰明小技巧只會讓人分心。

就像我在「Applyingneurosciencetosoftwaredevelopment」一文所說,當人們需要消化你寫的那段程式碼,他們腦袋裡的stack堆疊就會塞爆,而變得難以運作。

▲如果需要你來解釋才能懂,就不要把程式碼弄得太有個性別用「你自己的流派」寫程式,照標準來寫就好。

這些東西都已經有標準做法了,照大家習慣的方式來寫,能讓你的程式盡量好預測又好讀。

2.DivideandConquer複雜的程式碼通常能利用模組化技巧來整理,而且除了創造更多函式以外,還有很多方法可以達成。

把一項長條件的結果放在一兩個變數內,就是取代呼叫函式overhead系統開銷的模組化方法之一。

這樣一來還能用它們組成更大的條件式,或是在其他地方重複使用這些結果。

這個拆解問題的方法,要盡量讓每個部分保持集中,影響範圍只留在本地狀態,不要混進其他不相干的issue,可能的話盡量避免副作用。

程式語言和函式庫通常都帶有各自的issue,把這層影響抽掉能夠讓你的程式碼專注在自己的工作上。

「單一責任原則」也是在強調,專注在本地程式碼可以產生好的設計。

▲我喜歡利用變數來釐清邏輯TDD(測試驅動開發)除了成功實行帶來的好處以外,還強迫大家採用一些之前沒那麼熱門的準則。

之前無狀態的程式碼被嫌棄又慢又沒必要(看看大部分的舊C或C++程式),而現在大家都在談純函式(purefunction)。

就算你沒在用TDD,也該瞭解一下背後的原則。

在新的規範下工作能讓你成為更堅韌的開發者。

3.分散且可行寫程式的時候,電腦和工具面對的困難跟程式設計師差不多,而程式愈複雜,要使用的前端處理程式和變體(Mutation)就愈多。

先不說額外建置工具的優點,它們有很高的機率會要你用像自訂模板或雜湊表格之類的複雜動態資料架構等等限定範圍的語言。

整合開發環境(IDE)通常在這方面的表現都不太好,要找到相關的程式片段就會更加困難。

避免使用你的IDE支援度低的擴充和程式,它們帶來的衝擊,遠遠超過簡化架構或節省幾行程式這些微不足道的好處。

▲使用 ServiceLocator也是和IDE整合不佳的例子之一另一個保持IDE整合度的重點是避免使用magiccode。

大部分的語言都會提供一些方法讓你寫出更動態的程式,但濫用這些像是魔術字串(magicstring)、魔術陣列索引(magicarrayindex)和自訂模板語言等功能,會產生一個更難連結的codebase。

通常只有人類才看得懂的程式碼,就會讓你走上這條難以回頭的路,因為如果你的IDE看不懂這些程式碼,那當你想要換到更靜態的架構時,它所有的重構(refactoring)功能都沒用了。

4.讓程式更好讀建立一個可預期的架構。

這樣一來團隊成員能更容易地找到東西,而大幅減少完成工作的時間。

當你定好整體架構,記得讓主要元素的位置保持顯眼。

比如用MVC就把模型(model)、視圖(view)和控制器(controller)放在各自的資料夾裡,不要藏在層層路徑下或是分散在各個不同的地方。

前面談到了模組化,過猶不及也可能發生過度模組化的情形,讓人更難找到程式碼。

IDE有時候幫得上忙,不過通常會因為有太多不相干的程式碼,你還得讓IDE忽略vendor/library資料夾,或編入指引,手動處理這些問題。

這是雙輸的局面,因此盡量試著選擇符合最多需求的函式庫,減少函式庫的數量。

函式庫和工具也可能成為新開發者的阻礙,我最近就用EcmaScript7(bable)建置新專案,隨後卻發現開發的新人卡在那裡,試著弄懂這些程式碼的意思。

這大大地拖累了團隊的生產力,我也能了解對新手來說這壓力有多大。

不要使用太難上手的工具,除非你碰到更好的時機。

▲這是我寫的makefile的部分程式碼。

而新人無法處理過多的新技術。

5.讓程式更好消化如果你終於讀到這裡,恭喜你,這可能是最重要的一段。

命名在軟體開發中是公認的大哉問。

建置工具大概不會在這上面有所改進了,因為電腦不會懂某個解背後的意義。

你得親自記下原因,為變數及函式取個有關聯且有包含前後文的名字會是不錯的方法。

能夠傳達用途的名字甚至還能減少所需的紀錄文件。

直接把意義加在名字前方是個好方法,以前曾經很流行,我想它逐漸消失的原因應該是太常被誤用。

比如匈牙利命名法原本是為了附加意義,但最後常失去前後脈絡,變成只有表達類型之類的資訊。

▲流暢介面(fluentinterface) 最近常被濫用最後就是降低迴圈的老生常談。

意思是讓條件的分支(branch)愈少愈好,每多一條分支不只會增加縮排,也會影響易讀性,而且最重要的是會增加需要追蹤的項目。

結論和推薦閱讀以上就是5點簡單又包羅萬象的概念,這篇文章的目的就是給你一些收納箱,可以讓你把管理程式碼的想法放進去。

在寫程式的時候,練習應用並進一步加強這些觀念。

如果你還沒開始,我也相當推薦《軟體建構之道》這本書,裡面有很多範例,並且詳細剖析了絕大部分的狀況。

  分享文章或觀看評論 評論 Mia 看起來乖巧的怪人,性不喜出門,愛上網。

興趣是半夜滑app商店研究新服務以及逛PTT,是故言出必宅,笑點難懂。

品牌 供應鏈管理新顯學,看美光如何用AI雲技術打造數位分身 2022/09/14 廣編企劃 雲端 、AI 、半導體 、供應鏈 、數位轉型 、科技業 、斷鏈 、全球供應鏈 、成功案例 、美光科技 、供應鏈管理 、BlueYonder 市場瞬息萬變,科技業如何有效管理供應鏈,就成了勝出關鍵。

半導體大廠美光在最近一波全球缺料危機中,藉由創新的AI+雲端智慧供應鏈管理,做出精準規劃,讓製程效率、產能、成本都獲得改善。

評論 SPONSORED PhotoCredit:BlueYonder 評論 立即預約觀看》10/18美光供應鏈分享,再送7-11數位禮券乙張(價值100元,數量有限,送完為止)!「供應鏈」,短短三個字,背後卻是複雜又漫長的商業流程。

科技供應鏈在管理上原本就有先天挑戰,一支手機從設計、製造、到送達消費者手中,須至少一年的時間及無數的製程,一個環節出錯,輕則延誤交期,重則影響商譽,甚至牽連整個產業生態系。

近兩年科技供應鏈又面對地緣政治和新冠疫情的考驗,再加上全球淨零承諾的的減排要求,導致成本壓力更大、客戶期望更高、競品方案更多、差異化更形困難。

借重AI及雲端技術,美光打造供應鏈數位分身這樣的新常態之下,如何打造韌性供應鏈、甚至提早察覺趨勢,預做準備呢?半導體大廠美光數位轉型高級總監(SeniorDirector,DigitalSupplyChain)SpencerPetersen指出,迎接全新的供應鏈挑戰,最重要的是速度,因此美光檢視了供應鏈既有的流程及工具,以敏捷反應為目標,近期更與BlueYonder攜手,透過AI/ML演算法結合雲端平台,打造出供應鏈的數位分身,再搭配先進的規劃引擎,透過即時資料的反饋,掌握全球各地產線的良率變化、需求變化、物料狀況。

PhotoCredit:BlueYonder更特別的是,這套先進的供應鏈管理系統,將美光特有的營運策略整合其中,例如針對不同目標(訂單承諾、交期、安全庫存、降低成本等)擬定優先順序,就像是提供給規劃引擎的「腳本」,已預先設定各種情境,一旦A發生就採取B行動,其中的參數也可輕易調整。

系統在進行每個自動化決策時,均依循這套專屬美光的策略。

主規劃排程演算法再進化:「素食Pizza」理論美光導入的創新智慧方案,還有一個重大突破:將供應鏈的主規劃排程(MasterPlanningSystem),從原本的Heuristic演算法、轉化為LinearProgramming(線性整合規劃),前者是獨立解決每個訂單的需求,雖能救急但不具宏觀考量,效益往往不高,而且須要人力不時介入;後者則從更整體的角度看待全盤的供需管理,一旦出現需求波動、庫存改變、良率變化,就能針對物料、產能、出貨、物流做出最優化的分配。

BlueYonder指出,「素食Pizza」理論最能解釋這種供應鏈排程的方法論進化。

員工餐廳每天中午供應的素食Pizza數量有限,若採訂單的個別管理,午餐時間到,每個人排隊依序進場,點什麼就給什麼,很可能素食Pizza會被前面的葷食者點走,導致隊伍後方的素食者沒有東西可吃。

在供應鏈排程中,短缺或有限的物料就像是素食Pizza,若未整體考量,就會用在不該用的訂單上,導致BOM表成本飆高,甚至走進倉庫發現無料可用,想追加貨源卻訂不到的窘境。

美光導入供應鏈數位分身及全新演算法排程,距今僅短短的時間,但已看到初步成效,例如稀缺的物料得以有效運用,且所有產品線的需求滿足率都顯著提升。

此外,產品交期也更加準確,延誤改善率達1.9%;庫存下降了2-3%,換算每年約可節省1500萬美元的製造成本*。

BlueYonder智慧供應鏈管理方案,三大應用情境BlueYonder指出,科技業當前的供應鏈管理課題,有三大重點:速度、能見度、自動化,這些都必須仰賴量身訂作的雲端AI演算法系統。

BlueYonder身為供應鏈管理的軟體服務提供商,在高科技產業有豐富的經驗,所提供的SaaS方案,可依客戶的不同需求,滿足下列三大情境:供需規劃—上述美光案例即屬於供需管理,包括庫存的有效利用及精準分配、訂單承諾等。

能見度與協作—即時全球運籌,例如BlueYonder與微軟合作,透過AI雲方案,即時掌握Azure在世界各地資料中心的狀況以便快速反應。

全通路滿足—除企業的核心營運外,BlueYonder的解決方案也可進一步延伸到終端銷售,甚至與外部資料串接,例如掌握客戶庫存、品牌終端銷售;或將影響營運的重要外部數據(匯率、氣象、重大新聞)整合入系統之中。

              科技業追求產品技術卓越的同時,供應鏈管理也要升級科技業為了維持競爭力,不斷在本業的核心產品及技術創新,但同樣重要的是,供應鏈管理必須跟上時代。

借重AI/ML及雲技術來打造高度自主、敏捷、效率的自動化流程,才能提供差異化的顧客體驗,在複雜萬端的市況下,實現成長、永續、降低風險等多重目標。

立即預約觀看》10/18美光供應鏈分享,再送7-11數位禮券乙張(價值100元,數量有限,送完為止) *資料來源:美光Petersen 分享文章或觀看評論 評論 廣編企劃 由關鍵評論網媒體集團《業務團隊》製作,由各品牌單位贊助。

業務與行銷相關合作,歡迎與我們聯繫。



請為這篇文章評分?