程式設計的幾點體會

來源:互聯網
上載者:User

通過這段時間的思考,經過實際編碼的驗證,總結了一下幾條設計技巧,記錄備忘。

1 模組要提供讓外部調用者可以擷取模組內部運行資訊的手段

在模組設計中,模組內部的運行資訊通過回調的形式,給模組外部調用者提供查詢模組運行狀態的手段。最常見用途的可能就是作業記錄了。回呼函數是個好東西,在C/C++裡叫做函數指標,在.net裡叫做事件。

這種模組內部的暴露只是暴露運行資訊,而不要把內部成員暴露出來,否則就與模組的低耦合(類的封裝)相違背了。

以C#為例:

using System;namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            A a = new A();            a.log += a_log;            a.Test();        }        static void a_log(object sender, string e)        {            Console.WriteLine(DateTime.Now.ToString("u") + " " + e);        }    }    class A    {        public event EventHandler<String> log;        private void OnLog(String msg)        {            if (log != null)            {                log(this, msg);            }        }        public void Test()        {            OnLog("begin do something...");            //do something            OnLog("done.");        }    }}

 

2 設定檔、UI、程式運行狀態的關係

為了讓介面和功能分離,UI不要直接控製程序的運行狀態,而是要在UI和程式狀態之間加入一個設定檔層。即

UI-----設定檔------程式初始狀態

 

設定檔一般都採用xml格式。這樣就需要制定xml設定檔的規範,有了這個規範,UI和程式設計就可以獨立進行了。當然一開始,往往不太容易很明確的確定設定檔規範,需要一個迭代的過程。

 

這樣做帶來的好處是顯而易見的,最明顯的就是程式的可移植性。因為移植最難的地方也就是UI了,既然UI與程式本身沒有直接聯絡了,所以移植非常簡單。

 

要做到這種分離方式,必須保證設定檔的規範性。一旦這個規範修改了,UI和程式都需要相應的修改。

虛擬碼如下:

    // 功能類    class A    {        private String filePath;                         //設定檔路徑        public static A FromXml();                       //從xml設定檔初始化功能模組    }    //介面類    class UI    {        private String filePath;                        //設定檔路徑        public void FromXml();                          //從xml設定檔初始化UI        public void ToXml();                            //儲存當前UI配置為設定檔    }

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.