Re: [討論] 因為空格~我離開了一間公司

作者: changyuheng (張昱珩)   2014-09-14 17:39:36
公司的 coding style 可以很俗,但若有標準可循也就沒什麼好說的了。
原 po 自己也說,
Apache 的 code 看起來就像一個人寫的
(雖然 Apache 是一個組織,旗下有一堆 project 包括 OpenOffice)。
雖然我也認為應該採用 guard,
但公司透過規定你的 coding style 來達成這個條件也無可厚非。
當你不是 projet owner 的時候,就只能 follow 別人定的規則,遵守 convention 。
每個人都有自己的想法,加上軟體的學問常常翻新,更別說還有各門各派,
所以改變別人想法、期待別人「進步」 (進步與否是主觀的) 不能根本地解決你的問題。
之前公司因為每位工程師身上都各自背案子,
但工程師間對於 code 的要求差異很大,
我索性把 codebase clone 好幾份放在 host,
每位工程師都是自己負責的案子的 project owner,
仍然保留了除了他和他認可的人以外,上 code 都要經過 review 這個機制,
但是每個 project 的 reviewer 不同,
而且定標準的自由可以留給各個 project owner。
彼此依舊可以看到別人的 project 有上什麼 commit,不妨礙交流。
因此,我們雖然可能同是做 AOSP 的 project,
但負責不同 case 或用在不同 device 上,
就是不同的 project,
codebase 是分開的,
host 上因此有上千個 repo。
雖然會有浪費 host 空間的缺點,
但是這樣更有像 GitHub 一樣 social coding 的感覺,
也可以做到封裝的概念,大家都管好自己的 project 就好,
要是去管別人的 project 的 coding style,那就是撈過界。
※ 引述《guest2008 (guest)》之銘言:
: 這個我看起來 A 跟 B 根本沒什麼不同,但 B 確實比較糟糕。
: 因為都是 X條件觸發,處理 X條件,再繼續往下做。
: 但你是 X不成立,就返回。這個 !X 不是好方法,實際上對系統架構沒幫助。
: 你要讓系統結構很維護,避免那麼多{}層出現,
: 框到到底那個 } 是對應那個 { 都不知道了,應該這樣寫:
: if(
: fun_A() == true
: && fun_B == true
: && fun_C == true
: && .......
: )
: {
: 做某件事
: }
我所知的語言,function 的 return 值可以滿足 condition 就不會再做多餘的比較。
例如
if (funcA())
不會寫成
if (funcA() == true)
就算是要正規化也會這樣寫 (但沒賦值給變數也不需要)
if (!!funcA())
: function fun_A()
: {
: if(....) return(false);
: return(true);
: }
return 是 statement,後面接的括弧是給 expression 用的。
但是 (true) 不就是 true 嗎?
: 下略,自己補上 fun_B()..fun_C()。
: 這樣寫有啥好處??
: (1) 最大好處就是太多層後,真的不知道那個 } 是對應那個 {
: 也就是你一直在數空格數到底空對了嗎?
: (2) 除錯超快,注意我是直接每個判別直接寫一行,
: 你寫的落落長後,除非你是天下奇杷,腦袋超清楚,
: 要不然肯定會錯啦~~這個地方我除錯的速度絕對比你快。
: 我直接一行一行 // && fun_C() == true
: 就找出問題了。
: 甚至未來你某個條件不想再用就像上面一樣 mark 掉就好了。
: 以上給參考,你自己去評估三種寫法哪種最好。
: 另外如果有人又要出來跟我戰他要用 class 寫法最好,
: 還是說這個寫法糟透了,那是他家的事,我不出來應戰。
: 我只是恰好路過,出來建議一下而已。
作者: mapleone (mapleone)   2014-09-14 18:29:00
我常接觸的語言有兩個特色1.function/method的回傳值,不
作者: ckvir (ckvir)   2014-09-14 18:51:00
我覺得==true比較好閱讀耶用return有時不直覺return什麼
作者: x000032001 (版廢了該走了)   2014-09-14 19:37:00
因為回傳bool的func多半取名is開頭 加==有點畫蛇添足

Links booklink

Contact Us: admin [ a t ] ucptt.com