C語言的掌握情況鸳粉,在于以下的分界線断医,
20行 ? ?200行 ? ?2000行 ??20000行 ? 200000行黔衡,還有別的
attention:這個(gè)行數(shù),不是你寫了多少行程序決定的耗美,而是大概這么長的一份源代碼京髓,你會寫成什么樣子。
1商架、20行堰怨,了解C語言基本的關(guān)鍵字,操作符.
這個(gè)大小的程序蛇摸,體現(xiàn)不出來程序員的水平
2备图、200行,了解C語言的程序結(jié)構(gòu)皇型,就可以寫出200行诬烹。
只要懂了ifelse砸烦,就可以寫出200行的程序來弃鸦。
這個(gè)級別的程序里,我見過200多行的一個(gè)函數(shù)幢痘,void進(jìn)唬格,void 出,程序里滿了全局變量和
if颜说,else 购岗,&& ,||
這個(gè)時(shí)候就大概能看出一個(gè)人對C語言的掌握情況了门粪,
PS:我個(gè)人認(rèn)為喊积,一個(gè)函數(shù)的長度應(yīng)該控制在50行左右,因?yàn)橐坏┏^了這個(gè)長度玄妈,我們就無法清晰完成的考慮到
特殊情況的出現(xiàn)乾吻,但是50行以內(nèi)的程序髓梅,我們基本可以考慮的周到,最重要的是不會遺漏條件绎签。
稍微掌握好的枯饿,會對變量進(jìn)行封裝(哪怕只是簡單的結(jié)構(gòu)體),
整體程序能分成幾個(gè)不同函數(shù)來進(jìn)行诡必。
你自己可以評估一下奢方,20行和200行的程序,如果只是函數(shù)代碼行數(shù)的差異爸舒,那你的水平就限定在200行蟋字。
程序越大,你的邏輯性就越復(fù)雜扭勉,只掌握這些基本用法的程序員愉老,我不建議寫超過200行的程序,因?yàn)橐坏┏霈F(xiàn)bug剖效,
根本沒有辦法去定位錯誤點(diǎn)嫉入,后人也根本不敢更改你的程序。
3璧尸、2000行咒林,了解C語言的數(shù)據(jù)封裝,參數(shù)傳遞爷光。
? ? ?這個(gè)2000行垫竞,不是整個(gè)工程是2000行的,而是一個(gè)模塊蛀序,一個(gè)單獨(dú)的程序模塊是2000行的規(guī)模欢瞪。
? 其實(shí)在200行的和基礎(chǔ)上,知道使用函數(shù)去完成基本簡單的功能徐裸,哪怕是void Function(void),那你也可以把這2000行的程序去寫完遣鼓,
但是就像只有if else寫的200行的程序,一旦出現(xiàn)問題重贺,就沒法定位骑祟,后人也沒法更改。
這個(gè)級別的程序气笙,必須學(xué)會掌握使用結(jié)構(gòu)體進(jìn)行相關(guān)變量的封裝次企,合理使用函數(shù)的參數(shù)值和返回值,各種指針還有關(guān)鍵的對程序的分層次處理潜圃。
再復(fù)雜的問題缸棵,都可以拆分成簡單的邏輯去完成,如何去組合和運(yùn)用這些邏輯谭期,就體現(xiàn)出來你能否駕馭2000行的程序堵第,
PS:我個(gè)人認(rèn)為稚晚,一個(gè)模塊的基本長度應(yīng)該在500行左右,超過這個(gè)長度型诚,人就很難整體的去理解這個(gè)模塊了客燕,就像TCPIP協(xié)議一樣,你是沒有辦法很快搞清楚七層協(xié)議的狰贯,但是你可以專門搞其中的一層也搓,你可以搞的清楚。因?yàn)樵谀且粚幽阒魂P(guān)心那一層)
所以你寫了2000行的程序涵紊,整體至少分出三個(gè)層次來傍妒,各個(gè)層次之前有很清楚很明了的調(diào)用關(guān)系(這個(gè)地方的控制方式你可以理解為函數(shù)的參數(shù)和返回值,一般來說這個(gè)規(guī)模的函數(shù)傳遞就要使用指針了摸柄,因?yàn)閮?nèi)容太多了颤练,必須封裝,后面我會解釋為何函數(shù)的參數(shù)盡量不要超過三個(gè))驱负。
4嗦玖、20000行,這個(gè)規(guī)模的程序跃脊,都是為了給后人維護(hù)的宇挫。
? 一旦通過了2000函數(shù)的限制,20000的程序可以輕松寫出來酪术,200000行的程序也可以寫出來器瘪,而且邏輯上并不會比2000行難理解多少,那我為何會把20000行作為一個(gè)里程碑提出來呢绘雁,因?yàn)檫@就涉及到了維護(hù)和擴(kuò)展的問題橡疼。
能把2000行的程序?qū)懞茫ㄎ艺f的不是能寫出來),20000行的程序你自己可以維護(hù)庐舟,但是一個(gè)新人怎么維護(hù)欣除,一個(gè)新人怎么借用你的程序,怎么擴(kuò)展你的程序继阻,20000行就會體現(xiàn)出差異來耻涛。
如果你要在20000行的程序上增加一個(gè)功能(大概2000行吧),有多少輪子需要他自己造瘟檩,有多少內(nèi)容他可以借鑒,這就看你能否把你的接口設(shè)計(jì)的合理了(如果能在2000行上得心應(yīng)手澈蟆,我覺得這也不會是問題)
?那么問題來了墨辛,現(xiàn)在新人需要對你的20000行進(jìn)行更改移植,這個(gè)時(shí)候趴俘,就能看出來你設(shè)計(jì)的20000行的好壞了睹簇,他需要更改那些內(nèi)容奏赘,他更改的地方有多少,有多少相同的地方太惠。
? 如果你能解決掉這些問題磨淌,那么你就可以輕松應(yīng)對2萬,20萬行了凿渊。
5梁只、最后一點(diǎn) ?
? ? ?這一點(diǎn)不是通過你駕馭多少行代碼決定的,而是你的算法埃脏,20000行能決定你是否是高手搪锣,但算法才是你高手的真正武器。