2015年12月30日 星期三

[VS 2013] 找出複雜程式碼

    前言 : 利用vs幫自己找出需要重構的複雜程式碼

     

    這邊有一五項指標給大家做參考 :
    a.循環複雜度(Cyclomatic Complexity) :   <10

    b.繼承深度 :  <3
                 ex . 抽象類別 –>  衍生1 –>  衍生2
    c.類別結合程度(Class Coupling)
    d.程式碼行數 :  一個function < 40
    e.可維護性 : 官方建議 > 20 是高維護性


    步驟 :


    1. 點擊分析 –> 計算方案的程式碼度量


    2015-12-30_112449

    2. 等待分析完成
    2015-12-30_112559

    3. 篩選器 : 選擇循環複雜度 最小20 (可自行調整)並確定
    2015-12-30_112920

    4. 匯出Excel
    2015-12-30_112654
    5. Excel 表格中第一欄就會顯示各層級,我們只篩選”成員”
    2015-12-30_112957



    6. 登登登-結果出爐,接下來我們就可以自行判斷裡面哪些是需要重構的程式碼囉2015-12-30_113125

參考 :

 [Tool]Visual Studio 2010 - 程式碼度量
Visual Studio 計算程式碼度量 - Code Metrics Viewer 2013


2015年12月29日 星期二

[C#] 兩個問號??

var demo = value ?? 0;

就是判斷value 是否為null, 如果是null則賦予0值

就是語法糖 :  var demo = (value != null) ? value :  0;

[Error][IIS][php] 處理常式 "PHP_via_FastCGI" 的模組清單中有錯誤的模組 "FastCgiModule"

錯誤訊息 :

2015-12-29_091359

解釋 :

最有可能原因提到為安裝完整ASP.NET,因此到WINDOWS 功能確認是否都有開啟開發功能

如下圖,都開啟後就順利在iis使用php 網站囉

 

2015-12-29_091659

2015年12月25日 星期五

[C#] 變異性

變異性

  • 共變性
    • 用基底類別取代衍生類別
    • 常用在輸出用
    • 多用再回傳
  • 不變性
    • 如 泛型類別具不變性
  • 逆變性
    • 用衍生類別取代基底類別
    • 多用在傳進參數
Tips
  1. 先寫共變性
  2. 再去分辨
泛型介面變異性

        宣告Out
            共變性
                IEnumerable<T>
        宣告In
            逆變性
                IComparer<T>

[C#] 泛型

筆記整理

  • .Net2.0 開始
  • 強型別概念
  • 應用 : 介面、類型、方法、委派
  • 泛型會實做非泛型
  • 避免容器操作Boxingm Unboxing

default 關鍵字

  • 當沒有條件約束時 : return default(T)
  • 當有條件約束時 : 
    • 實質型別 : 0
    • 參考型別  : null
  • 泛型約束條件
    • where T :  Class
    • where T : new()   ----- 必須擁有共用的無參數建構函示

[C#] 介面 Interface

介紹

  • 抽象中的抽象
  • 職責範圍小設計必須要小(設計必須要小)

筆記整理

  • 關鍵字使用interface
  • 界面是屬性、方法、事件、索引的簽章
  • 不能定義執行個體欄位與建構式
  • 不允許定義靜態成員
  • 繼承同名簽章的多介面需要”明確實做”!
    • 明確實做需要轉型才能呼叫

[C#] 擴充方法

筆記整理

  • Class 前需要加 Static
  • 所有Method 前也需要加 Static
  • 編譯後就是static method
  • 不能與原類別方法同名
  • 講求內聚性的方法一定要用成員方法

好處

  • 提高閱讀性
  • 現在常大量使用linq (ex. abc.where(…)),如果沿用靜態方法就會變成大腸包小腸

使用情境

  • 遇到 seal class
  • 類別不該用繼承做的時候-造成低內聚、高耦合