让你提前认识软件开发(3):学校C语言教材的缺陷
第1部分 重新認識C語言
學校C語言教材的缺陷
?
??????? 我在走出校門的時候非常的“輕狂”,認為自己在學校里面已經學得夠多了,工作就只算是小菜一碟。但在工作中屢次碰壁之后,我才發現自己當時的想法是多么的天真。我們踏上工作崗位,一切幾乎都要從零開始。
??????? 對于大家“非常熟悉”的C語言來說,我們在學校里面學的非但不夠用,而且在很多地方對大家還有“誤導”的作用,讓我們認為編程就是那么一回事了。
??????? 我舉某知名C語言教材中的“函數”那一章的某程序為例子加以說明。程序如下:
#include void main() {float fac(int n);int n;float y;printf("input an integer number: ");scanf("%d", &n);y = fac(n);printf("%d!=%10.0f\n", n, y); } float fac(int n) {float f;if(n<0){printf("n<0, dataerror!"); }elseif(n == 0 || n == 1)f=1;elsef=fac(n-1)*n;return(f); }
???????? 對于以上程序,至少存在以下問題:
???????? 第一,變量命名不規范,而且沒有初始化。對于該程序,main函數里的變量n、y,fac函數里面的變量f的命名均不規范,不能讓人一眼就看出它是什么意思、要做什么操作。這對于一小段程序來說,影響還不是很大,但如果代碼行數達到數千行,那么閱讀起來就比較的費力。另外,以上說的三個變量只是定義了,并沒有初始化,這在實際項目中也是不允許的。
??????? 第二,函數的命名不規范,且沒有在主函數開始之前進行聲明。本程序中的fac函數表示什么意思?如果你沒有看程序開始之前的文字,那么只有通過閱讀函數里面的代碼才能知道。在實際項目中,函數命名非常的重要,因為一般涉及到函數個數較多,如果不能通過函數名稱來了解其作用,而必須通過閱讀代碼才能獲悉,那么工作效率是很低的。此外,我們一般不在調用該函數的函數的內部來對被調函數進行聲明,而是應該將聲明放在外部,最好新建一個頭文件來對程序里面出現的函數進行聲明。
??????? 第三,程序代碼排版不工整,“if…else”語句書寫不規范。在fac函數中,存在排版不工整的情況。第一個if語句下面的大括號應該與“if”的“i”保持在同一列上,第二個“else”應該與第二個“if”保持在同一列上,“f=1;”和“f=fac(n-1)*n;”應該再縮進4個空格。另外,“if”和“else”下面的執行語句不管有多少行,都應該用“{}”括起來,以方便閱讀。
??????? 第四,程序注釋過少,函數開頭沒有注釋。一般說來,在程序的關鍵語句的前面或右邊,都應該添加適當的注釋,這對程序的理解有輔助的作用。函數fac的前面應該加注釋,說明此函數的功能、輸入/輸出參數、返回值、修改記錄等。在整個程序的開頭處,也要添加版本信息、修改記錄等注釋信息,以方便日后查閱。
??????? 第五,程序中出現了“printf”、“scanf”和“main”函數。這是大家都習以為常的,但在實際的項目中,幾乎不可能出現這三個函數。因為公司都有自己的開發平臺,而且代碼都達到數千行,甚至上萬行,大部分都不是基于VC開發的,你在哪里去輸入,又在哪里去看輸出呢?我一進公司,最開始看到程序,就想去找“printf”、“scanf”和“main”,但這是徒勞的,因為根本就沒有。關于輸入/輸出,開發中會有專門的消息處理流程來處理,大家需要知道的就是一個完整的程序不一定非要有上面的三個函數。
?
??????? 短短的幾十行代碼,就出現了這么多大家“沒有想到”的問題。
??????? 看到以上的分析,也許你會很驚慌:我以前的C語言難道是白學了?
????????非也!我舉這個例子,一不是為了褻瀆經典,二不是為了給大家當頭一棒。我只是想說明,對于C語言,我們還有很多不知道的東西,即使是自己知道的,也與實際工作存在較大的偏差,大家要虛心學習。我和大家一樣,也經歷了最開的惶恐階段,而后才逐漸去改變了自己“根深蒂固”的觀念。“知錯能改,善莫大焉”啊!
??????? 雄關漫道真如鐵,而今邁步從頭越!
?
???????
??????? (歡迎訪問南郵BBS:http://bbs.njupt.edu.cn/)
??????? (歡迎訪問重郵BBS:http://bbs.cqupt.edu.cn/nForum/index)
??????? (本系列文章每周更新兩篇,敬請期待!本人新浪微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信號:245924426,歡迎關注!)
?
總結
以上是生活随笔為你收集整理的让你提前认识软件开发(3):学校C语言教材的缺陷的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python静态方法,类方法,属性方法,
- 下一篇: ios把数据传递到另一个页面_IOS 应