→ TonyQ:沒有任何作法可以產出「可維護性高」的ap 維護性跟需求 11/15 02:51
→ TonyQ:有高度相關,你今天專案再有彈性,需求跟你一百八十度轉彎 11/15 02:52
→ TonyQ:你一樣沒有可維護性。 11/15 02:52
如果你今天原本被要求寫關於醫療軟體,做到一半需求改為公司人員薪資管理之類的
的確不會有可維護性
不過,通常這種情形不會發生
→ TonyQ:有彈性 可擴充的 架構清楚的 ap 跟可維護性是兩回子事 11/15 02:52
是兩回事,但通常是正相關
→ TonyQ:至於可維護性高=最佳化剛好是逆命題,最佳化本身就是是一種 11/15 02:54
→ TonyQ:增加複雜度的作法,而通常增加複雜度也等於增加維護的困難。 11/15 02:54
最佳化的確在很多情況下是 "增加複雜度的作法" (或者說減少可讀性)
但我並沒有說可維護性高=最佳化
我說的是 "可維護性高通常可以很容易最佳化"
舉例來說,模組化通常是可維護性高
假設你有一百個模組,其中有二十個是最常執行的
而二十個中的四個,是隨時都在被執行的
於是,你可以採組類似這樣的策略
對二十個模組中的十六做最佳化,稍微犧牲一點可維護性
對剩下的那四個,做最極端的最佳化,
甚至完全不考慮未來的維護、可讀性,就算完全不可讀也無所謂
甚至,換更低階的語言也無所謂
(譬如原本是 Java 、Python,改用 C/C++ ,原本是 C/C++ ,改用組語)
總體來說,整個程式中無法維護的部分,也不過就是四個模組
就算有天需求改了,要動到這四個模組,但也不過就是四個而已(相較於原本的一百個模組)
此外,最佳化應該在專案後期,真的有必要才做
也就是,就算專案中間有需求改了
但因為程式可維護性高(尚未做最佳化),因此很容易做出相對應的改變
也不會因為太早最佳化,導致可維護性降低,但又因需求改變,先前的最佳化反而變白工
→ TonyQ:再用可維護性作為標的之前,有本事的就先為可維護性下定義吧 11/15 02:55
→ TonyQ:最佳化在任何情況下都不是一種禮物,而是一種負債。 11/15 02:58
這不用我定義,很多書都有
大部分的情況下,架構良好、可讀性高,通常可維護性就高
→ TonyQ:要考慮最佳化,正是為了需求考量而不得不借下複雜度債務。 11/15 02:58
→ TonyQ:有彈性可擴充是好事,但是我對「可維護」這個詞有意見。 11/15 03:09
→ TonyQ:事實上我看過得專案,大多是被不當的需求分析跟需求管理把 11/15 03:10
→ TonyQ:維護性毀掉的,而不是系統架構沒有維護性。 11/15 03:10
我只能說,SA、SD 很重要
※ 編輯: oaz 來自: 140.112.30.46 (11/15 04:06)
→ TonyQ:我們現在面對的問題就是,通常這種情形一直發生。 11/15 04:07
→ TonyQ:我同意SA、SD很重要,不過這方面只要沒有明確的方法論,就 11/15 04:08
→ TonyQ:還是只能倚賴主導者的能力。SA也好、SD也好,甚至是PG也好 11/15 04:08
→ TonyQ:甚至在我觀摩的team 也有專責寫doc的技術人員,但一樣的制度 11/15 04:09
→ TonyQ:兩個不一樣的team執行出來的可以天差地遠,而且我在的還是一 11/15 04:09
→ TonyQ:個投入大量預算的專案。已經不是台灣那種小鼻子小眼睛的專案 11/15 04:10
→ TonyQ:你說的東西看似方法論,但其實這是取決於SA/SD的經驗和能力 11/15 04:11
→ TonyQ:有能力者你不用說他也會這麼做,沒能力者,他也想這麼做, 11/15 04:11
→ TonyQ:但做起來就是亂七八糟... 11/15 04:11
→ TonyQ:再者,很多專案根本就是亂來,他們一開始就只打算炒短線 11/15 04:12
→ TonyQ:不管後續維護的,所以他們根本就不想認真丟出所有成本,像 11/15 04:12
→ TonyQ:詐騙集團稿預售屋一樣 弄出骨架就跑路了。XD 11/15 04:12
→ TonyQ:這種專案你去跟他們談SA SD 也沒意思,我是覺得這也是非戰之 11/15 04:13
→ TonyQ:罪啦,台灣也很有些重視這些東西的地方。 11/15 04:13
→ TonyQ:但不走這一套也不見得不能成事就是了,方法很多的。 11/15 04:14
→ TonyQ:然後我不認同你的立論「大部分情況下,架構良好、可讀性高 11/15 04:14
推 TonyQ:可維護性就高」。因為大部分會因為最佳化把可讀性犧牲掉。 11/15 04:15
→ TonyQ:並且除非你需求管理作得非常好,不然架構髒掉是時間問題。 11/15 04:15
→ TonyQ:通常只有老人家會覺得架構良好 可讀性高,但新人接手就死定 11/15 04:16
推 thinkniht:大推TonyQ的最後一句 本人真是深有同感 11/15 07:12
→ thinkniht:看過一些資深或被認為技術很強的人 11/15 07:12
→ thinkniht:東西沒遵守OO的原則 註解沒怎麼寫 很難用一.一 11/15 07:14
→ atst2:OOD/A,XP,都是方法論的一環,不是不存在,而是沒人鳥他...- -a 11/15 07:56
→ TonyQ:OOD/XP 作為方法論還是很需要時間磨練吧。:P 11/15 08:00
→ atst2:問題不在於時間,當用到"方法"時,就代表這種做法更有效率 11/15 08:02
→ atst2:從整體的效益來看,一定能加速開發與經驗的傳承. 11/15 08:03
→ atst2:通常真正的問題,在於心理上的層面. 11/15 08:03
→ atst2:舉例來說,版上各位一定有遇過公司上層想要推某種開發方式 11/15 08:04
→ atst2:基層也認為該改變,但最後全部一事無成的情況... 11/15 08:05
→ atst2:這種情形下,去問上層的一定是說下面人反彈超大,問下面的亦然 11/15 08:06
→ atst2:明明所有人都知道該怎麼做,然而"積習難返",以致於失敗 11/15 08:07
→ atst2:此時已然跟"方法"的好壞,適合與否,全然無關,而是人心的問題 11/15 08:09
→ atst2:版上很多對於工程方法的討論,都很有見地,不過工程方法的實行 11/15 08:10
→ atst2:成敗並不是光工程師便可決定...大部分公司都忽略了PM,Sales 11/15 08:12
→ atst2:以及其他相關的合作部門,也必需要有一定的工程方法上的認知 11/15 08:13
→ atst2:甚至在跟客戶合作時,也必需要引導客戶進入開發的流程中... 11/15 08:14
→ atst2:有時會覺得需要去讀工程方法的,並不是RD,而是PM與Sales T.T 11/15 08:18
推 codemonkey:開發方法要真正成為團隊的文化、語言才有用處的, 11/15 08:27
→ codemonkey:如果只是拿來當SOP、文件格式...意義不大 11/15 08:27
→ Lordaeron:oaz 這麼有架構能力,想必工作很久,做過很多案子的. 11/15 11:30
→ Lordaeron:可以show 一兩個來看看嗎? 11/15 11:31
→ Lordaeron:否則這種必定的空話, 就不要在這高談了. 11/15 11:31
→ Lordaeron:因為教科書早十年前就這樣子講了. 11/15 11:31
→ Lordaeron:但偏偏在這個地球上沒發生過像教科書講得哪麼順利的. 11/15 11:32
推 thinkniht:同意codemonkey大 有些SA文件只是文件 11/15 12:46
→ thinkniht:不具甚麼SA的功用 11/15 12:47
推 pingsky:我推這篇... 這和我自己的工作多年的經驗相符 11/15 13:13
→ pingsky:然後請別要我 show 在那裡工作, 做過什麼案子, 謝謝 11/15 13:14
推 yoco315:我推這篇,可維護的程式比較容易作最佳化 11/16 03:00
→ yoco315:我還蠻訝異以 Tony 的程度會沒有這個認知 @@ 11/16 03:01
推 LetDogDay:推這篇...也不要問我在那裏工作...做過啥案子...謝謝 11/17 16:41
→ TonyQ:yoco 我對維護性的推文寫在下一篇 11/18 00:09
→ TonyQ:我認為彈性高、可讀性高、架構清楚的程式碼會比較容易做最 11/18 00:09
→ TonyQ:佳化。不過我不喜歡「維護性高」是因為維護性跟著需求來。 11/18 00:10
→ TonyQ:你說自己專案維護性高,就容易吸引挑戰你維護性的需求來。:P 11/18 00:10
→ TonyQ:直接回文了。 11/18 01:05