国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

寫出優雅簡明代碼的論題集 -- Csharp(C#)篇[2]

2019-11-17 03:35:19
字體:
來源:轉載
供稿:網友

謝謝大家對本系列第一篇寫出優雅簡明代碼的論題集 -- Csharp(C#)篇[1]的回復和討論,我相信針鋒相對的辯論不僅有助于發現答案,更讓我們了解問題后面的實質。

對程序員而言,我們的代碼需要:

1. 在預算內實現需求,讓用戶可以使用 -- 讓自己或者公司可以賺到錢

2. 方便自己修改及日后維護

3. 方便別人修改及日后維護

4. 便于重復使用,為以后的開發節省時間

5. 讓系統高效的運作

從美國商學院畢業的學生們掌握了很多相似的思維模式,這不僅有利于他們解決問題,更重要的是方便他們彼此之間溝通。-- 換句話說,他們畢業后都安裝上了相同的協議和一些可通用的接口,這樣有一個基礎平臺可以讓他們協同工作。

論題七:命名規范
也許有人認為沒有必要再提這個問題,但在日常編碼生活中,這的確是一個很重要的話題。

7.1  類名、方法、常數使用Pascal casing

 public class MyClass
{
    const int DefaultNumber = 100;
    public void MyMethod()
    { }
}
7.2 局部變量,參數用camel casing

 
             partial void OnContactIdChanging(int value)
            {
                int number;

            }
 
7.3 interface 名字以I 開頭

7.4 盡量不用單個字符命名變量,象 i 或者 t 。使用 index 或者 temp 之類代替。

7.5 將所有來自framework 的 namespace 放在前面,而后再放第三方或自定義的: 

 using System;
using System.Linq;
using System.Data.Linq;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel.DataAnnotations;
using CodeSmith.Data.Attributes;
using CodeSmith.Data.Rules;
 
論題八: 一個方法的參數不能超過5個,當多于5個時,應進行函數的拆分或者參數的封裝。-- 嚯嚯就像論題一樣的規定
一些說明:不是為了給自己一個緊箍咒,而是在日常編程中,我們發現如果你寫的方法不滿足這樣一個條件,一年后,就算是你自己也不太想去維護和修改,如果換成是其他程序員會對此更加的頭痛,對嗎?

論題九: 不要濫用注釋,有些非常清晰明確的代碼不需要注釋
僅在必要的時候注釋你的代碼,不要太多,并且注釋也要簡單給力。

論題十: 不要把數值hard-code在代碼中,使用const 來定義
論題十一: 不要使用””, 使用string.Empty
正確的:

 string name = string.Empty;
不建議:

 string name = "";
論題十二: 善于合并if
觀察下面這段可愛的代碼:


View Code
public bool Equals(CommentData obj) {      if (!CommentId.Equals(obj.CommentId)) return false;      if (!Comment.Equals(obj.Comment)) return false;      if (!CommentorId.Equals(obj.CommentorId)) return false;      return true;    }
如果我們寫成這樣會不會好些呢:

View Code
public bool Equals(CommentData obj) {      return CommentId == obj.CommentId &&             Comment.Equals(obj.Comment) &&             CommentorId == obj.CommentorId;    }

觀察下面這段可愛的代碼:

 
 public bool Equals(CommentData obj) {
      if (!CommentId.Equals(obj.CommentId)) return false;
      if (!Comment.Equals(obj.Comment)) return false;
      if (!CommentorId.Equals(obj.CommentorId)) return false;
      return true;
    }如果我們寫成這樣會不會好些呢:  public bool Equals(CommentData obj) {
      return CommentId == obj.CommentId &&
             Comment.Equals(obj.Comment) &&
             CommentorId == obj.CommentorId;
    }

 論題十三: 不斷重構你的代碼
當有新的需求或新改動的時候,可以撥一些時間來重構。 -- 你可能突然發現,原來重構后的代碼可以如此美麗。使用一些重構的插件,比如resharper可以使你事半功倍。

 當有新的需求或新改動的時候,可以撥一些時間來重構。 -- 你可能突然發現,原來重構后的代碼可以如此美麗。使用一些重構的插件,比如resharper可以使你事半功倍。

未完待繼…


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 习水县| 天峻县| 南投市| 临朐县| 黑山县| 交城县| 通化市| 永和县| 陇川县| 海门市| 安仁县| 延长县| 宜川县| 高要市| 乌鲁木齐市| 邢台市| 格尔木市| 紫阳县| 剑川县| 德格县| 安福县| 泉州市| 饶河县| 合阳县| 郑州市| 思南县| 乌拉特中旗| 措勤县| 元江| 商都县| 东至县| 雷州市| 长葛市| 三河市| 阜城县| 花垣县| 封开县| 喜德县| 大邑县| 沁源县| 湄潭县|