作者tyc5116 (累人啊....)
看板Soft_Job
標題Re: [心得] 反思程式革命的瘋狂。
時間Tue May 10 21:27:26 2016
※ 引述《NDark (溺於黑暗)》之銘言:
: 的原因避開了管理及工程的檢驗。其中的一些甚至應該燒掉,埋葬,用巨石鎮壓,然後把
: 這個警告刻在石頭上:天真地過分簡化管理,...
: Agile became a brand-name, with marketing hype. It therefore became subject
: to the rules of all such hyped products....
: 敏捷已經變質為一個招牌,還是一種行銷的炒作。它只是波潮流所推送的產品中的品項。
這段文章還好啦(沒看本文,只看節錄)
主要不就是理想和現實間的差距嗎
理想,也就是敏捷開發,這個idea很好,也有很多書在提倡
可以參考這本書
http://goo.gl/zYTckv
書的後面提供了一個失敗和成功的例子
就像信仰一樣,大家都希望人心向善,世界大同,但是理想和現實總是很差距
有很多要妥協的
敏捷開發很好,重構很好,可是schedule很趕
沒時間好好思考,copy paste功能弄出來再說,先求有再求好
design pattern很好,但是沒事用繼承這種高超手法幹麼,明明有比較簡單的作法
(我有聽過前同事這樣講....)
寫測試程式很好,但是schedule很趕,先求有再求好
總之就是先求有再求好了,不過事後通常不是因為懶或是code太難懂
反正也不會出錯,就先放著,累積久了就變爛code了,相信大家都有經驗
理想很好,但是沒考慮到實務上的狀況
有改動就有風險,跑好好的地方為什麼要改,一定會有人這樣想
更何況,要量化出怎樣才叫好的開發是很困難的
敏捷開發很好,但是你要如何拿出數據說服別人??
舉一個我個人的想法(不過也只是單方面的看法XD)
我覺得姑且不論任何寫作方式,只要能作到三個大方向,大致上code不會爛到哪裡去
1.命名精確,不要出現a1,a2等等的名稱
2.每個函式控制在200~250行內
3.括號的層數控制在三層內
e.g if
{
for
{
if
{
}
}
}
我覺得這很基本,離敏捷開發也還談不上,但實務上要完整實現就不知道要等多久了
so~實務離理想還太遠了,一步一步來嘛,你要求一步到位下場就是沒人認同
呼應一下這句,敏捷已經變質為一個招牌,還是一種行銷的炒作。
至少面試拿來嘴砲是很有用的
同樣的道理,"當責"這名詞不也一樣嗎,觀點很好
但想要一步到位,科科,當你去死~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.41.15
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1462886850.A.6D1.html
1F:推 NCUking: 函式200行? 你是認真的嗎? 05/10 21:30
2F:推 rayway30419: 20行其實就很多了 05/10 21:32
3F:推 sarafciel: 200行的code一定有辦法再拆函式出去 除非你寫組語XD 05/10 21:34
4F:→ tyc5116: 有可能行業別的關係吧,我常看到動輒1~2000的函式... 05/10 21:35
5F:→ tyc5116: 再拆當然還可以阿,但是...我覺得還是一步一步來會比較好 05/10 21:36
6F:推 NCUking: 說design patterns是搞繼承的那位 根本是不懂裝懂XDDD 05/10 21:39
7F:推 rayway30419: 200行的函式是什麼巫術....... 05/10 21:42
8F:→ rayway30419: 2000 05/10 21:42
9F:→ tyc5116: 我覺得design pattern是教你如何善用繼承和聚集的特性 05/10 21:44
10F:→ tyc5116: 前同事的說法某種程度也不能說是錯 05/10 21:44
11F:→ johnny94: Class 200 行還比較可以理解...函式 200 行是怎樣 05/10 21:49
12F:推 sarafciel: 突然想起交大某教授聊天時提到曾接手過印度人寫的13層i 05/10 21:55
13F:→ sarafciel: f波動砲 仔細想想200行好像也還算能接受的範圍(遠目) 05/10 21:55
14F:→ manaup: 個人的括號層數可以忍受到六層 畢竟還要try-catch 05/10 21:56
15F:推 ns1234: 我無法接收一個function超過200行。。這種一定都是可以再 05/10 21:56
16F:→ ns1234: 拆解的。。 05/10 21:56
17F:→ manaup: 沒有重複code的情況下 單函式3000行我可以 05/10 21:59
18F:推 rpdef9969: 2跟3應該存在弱關聯...像3F說的那樣處理, 05/10 21:59
19F:→ rpdef9969: 再加上guard clause觀念去檢視 ifelse flow 05/10 22:00
20F:→ rpdef9969: 巢狀層次可以有效約束。 05/10 22:02
21F:→ tyc5116: 200是我認為不搭配輔助方式(畫圖,下斷點,etc)仍然能容易 05/10 22:10
22F:→ tyc5116: 理解的範圍,不過看大家反應似乎還是很難接受XD 05/10 22:10
23F:推 Ekmund: 我看過不少破500 還有幾個破千的...該說幸運嗎 Orz 05/10 22:26
24F:→ GoalBased: 拿過一個因為行數太多一支檔案放不下只好寫成兩支的Y 05/10 22:30
25F:→ dnabossking: 新手的看法,所有的'好'設計,都是為了分離(解耦) 05/10 22:45
26F:→ rpdef9969: 設計模式原則是聚合優先於繼承 05/10 23:12
27F:推 Ayukawayen: 200行當上限我可以接受 當下限我實在不行 XD 05/10 23:42
28F:→ Ayukawayen: 是控制在0~(200至多250)行內 還是控在200~250行內啊? 05/10 23:44
29F:推 shortoneal: 一個function兩千行通常看到都是那種Thread function 05/10 23:49
30F:→ shortoneal: 裡面switch case 到欲罷不能那種..,每個case又不太大 05/10 23:49
31F:→ y3k: 一直跟schedule妥協只會讓不懂管理的人爽到 以為只要押schedu 05/11 07:08
32F:→ y3k: le事情就做得出來 結果就是愈做愈爛 我的話都一定會討論一下 05/11 07:09
33F:→ y3k: 反正我很努力了 如果趕不出來一定是schedule的問題(? 05/11 07:10
34F:→ Lordaeron: 高論!!什麼才是懂管理的人呢? 05/11 08:49
35F:→ tyc5116: schedule很重要阿,一定要以它為主,不過如果常常都不合理 05/11 09:01
36F:→ tyc5116: 就該換間啦,在那撐幹麼? 05/11 09:02
37F:推 Argos: 這裡好像沒見過什麼世面齁 前公司單函超過1000的滿地都是 05/11 09:17
38F:→ Argos: 不過這種世面 不見也罷 QQ 05/11 09:17
39F:推 ssadow: 通常不是要一次到位 只是想要為將來保留修改空間 05/11 09:24
40F:→ Lordaeron: 哦哦哦,都是沒看書的人。主席說10行就夠多的了。還 05/11 16:23
41F:→ Lordaeron: 200呢。打到死就是一個function 20行。沒聽主席講的。 05/11 16:24
42F:推 csfgsj: 這種問題我都是這樣解決,再多行再多層也不怕 05/11 16:52
44F:推 typepeter: 看作品看賺的錢才是重點 不幸的,跨國大公司都重視軟工 05/11 17:55
45F:→ typepeter: 程式寫難維護難懂 太長無法除錯 所以才有軟工一說 05/11 17:58
46F:→ Lordaeron: 哪幾家大公司重視軟工啊? 05/11 20:18
47F:→ bobju: 200行還好吧? 一堆open source的函式恐怕都不止這個數. 05/11 22:02
48F:推 typepeter: 有空去看看google Facebook apache 等公司的程式碼 05/12 02:12
49F:→ typepeter: ptt打筆仗很簡單 不如省下來去學習強者寫程式 多賺錢 05/12 02:14
50F:→ typepeter: 難怪國外都上太空台灣還在殺豬公 連大陸都屌打我們 05/12 02:16
51F:→ typepeter: 說到這個 有沒有聽過ibm yahoo 程式和技術也去看看吧 05/12 02:18
52F:推 storyn26383: 我有維護過單檔上萬行的 PHP……… 05/12 05:54
53F:→ Lordaeron: 典型見樹不見林,整天強者掛嘴邊。他們有多重視軟工? 05/12 07:48
54F:→ Lordaeron: @typepeter期待你的講解 05/12 07:50
55F:→ wesley234: csfgsj 不就是IBM的,你可以去問他 05/12 08:50