好代碼和壞代碼
無論從寫代碼的年限或能力來說,我資歷並不深。我也沒有能力去說教別人。但是,對於代碼的好壞,我們應該有一個清晰的標准(對自己的標准)。我在項目中,曾經被我的室友吐槽,代碼寫的像一坨屎!我當時很不屑,還和室友對罵一通。不過好在經過時間的洗禮,回頭看看自己曾經寫的代碼,還真特么寫的太丑陋了,到處都是不好征兆。到處散發着代碼的壞味道;
比如說:
- 命名不規范
- 過長函數
- 過長的參數列
- 重復的代碼
- 數據泥團
詳見 Martin Fowler 的重構
如何寫好代碼
首先,對自己有一些嚴格的標准和要求。例如:
- 代碼是寫給自己和別人看的:對於同一個功能實現有很多種方法,不管怎么寫代碼,代碼最終都會編譯成二進制,程序都會正常運行;但是有一點我們應該時刻記着。代碼應該保持清晰的結構,這樣對於后期的維護代碼很大的便捷性。假如有一天回頭要修改代碼,別人和你都感謝你!
- 建立良好的編碼命名規范:有人可能說,我們公司小,我們不需要規范;我們項目小,時間太趕我們不需要規范。但是請你記着,那樣的代碼就像定時炸彈,以后的維護成本會很高。我想說,放下借口,每個人都應該有一套自己的編碼規范或者團隊的編碼規范。這樣對你的程序之路會越走越好!
- 學會不間斷的重構:重構一種提高代碼水平捷徑。可以參考Martin Fowler 的《重構-改善既有代碼的設計》這本書。
C#編碼規范
我是一個.net開發者。所以就說說C#編程的命名規范;一般都采取駱駝命名法。
例如:myData是一個它第一個單詞的第一個字母小寫,后面的單詞首字母大寫,看起來像一個駱駝。
- 命名空間:[公司名].[模塊名] 如:iHealthwoo.Resource這樣的命名方式;
- 類名:MyClass 取每個單詞首字母大寫;
- 方法名:動詞+名詞。如GetName() 采取首字母大寫;
- 私有變量:_myClassName 是一個下滑線+駱駝命名法;
- 方法參數名:采取首字母小寫。GetUser(string userId);
- 方法內變量:如mUserId。m+駱駝命名法,表示方法內變量,其中(m=>取自於Method中的m);
- 常量名: [操作名]_[狀態]_[消息提示信息]; 如SUBMIT_FAIL_MSG代表提交失敗消息;
- 枚舉命名:[枚舉][Enum];如:StatusEnum,一看就知道就狀態枚舉.甚者更細化一點PrintStatusEnum指的是打印狀態枚舉;
- 委托命名:[委托名][Delegate],如:SubmitUserDataDelegate,表示提交用戶數據委托;
薦書