2018年5月20日 星期日

爛 code 收集器//過度依賴全域變數

建構式初始化了一堆....全域變數? 全部都宣告成靜態變數!!! 可以查一下 global 前綴的變數有多少。 卻放在建構式裡初始化。

public partial class App : Application
{
  public class IniInfo
  {
  //一堆屬性

    public IniInfo()
    {
      //真正的建構式
    }

    private static string IniPlusReadString(string m_Section)
    {
      //讀取ini檔的設定
    }
  }

  public static Component1 globalComponent1 ;
  public static string globalAppImagePath =
          System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + @"\ObjectImages";
  public static string globalAppRecipePath =
          System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + @"\Recipes";
  public static string globalIniPath = // filename
  public static SplashScreenWindow globalSplashScreenWindow;
  public static Component2 globalEvent;
  public static Log globalLog;
  public static ClientHandle globalMessageHandle;
  public static MessageLoadedHelper globalMessageLoadedHelper;
  public static SingleHandle globalSingleHandle;
  public static IniInfo globalIniInfo;
  public static Dictionary<string queryindicatorsettinglobalresult.indicatorsettinginfo=""> globalIndicatorSettingDic =
          new Dictionary<string queryindicatorsettinglobalresult.indicatorsettinginfo="">();
  public static CultureInfo globalCultureInfo = null;

  public App()
  {
    //初始化物件
  }
}
不應該過渡依賴全域變數,應該要將該變數變成 class 裡的變數,並且若需要值的傳遞時,必須要透過 method 進行。 這樣 trace bug 也直覺,也更好防堵 bug 產生。 無言的聲音: 浪費了 c# 的物件導向....微軟的工程師,辛苦了...你們的辛苦寫的程式碼,完無沒有體現價值。

沒有留言:

張貼留言