星期三, 10月 15, 2014

寫程式就要像寫文章一樣

前幾天有位同事, 姑且叫他 Terence 吧, 問了我一個關於寫程式的問題,
我覺得很有意思, 把這個過程跟大家分享一下

"ccw, 請問一下, 你比較支持匈牙利命名法還是底線命名法呢 ?"
"泰倫斯, 你是說 ThisIsABook 或是 this_is_a_book 這兩種寫程式的命名法則嗎 ?"
"是的, 我感覺這兩種都有人支持, 也都各有好處, 不知道該選擇哪一種"
"如果單單只有比這兩種法則, 是很難選擇的, 但是如果把層次拉高一點, 我會選底線命名法"
"哦, 甚麼叫做把層次拉高一點呢?"
"所謂的層次拉高一點來看呢, 就是以程式的可讀性來考量"
"可讀性 ?"
"我覺得寫出來的程式, 要讓自己和別人最容易閱讀, 將來才容易維護或是改善"
"了解, 可是這跟命名法則有關係嗎 ?"
"有一點關係,

 例如下面這段程式

 if (authentication_is_success()) {
       load_welcome_page();
 }

 就會比下面這樣的程式風格, 更一目了然


 if (AuthenticationIsSuccess()) {
       LoadWelcomePage();
 }
"ccw, 我有點感覺了, 而且前面哪段程式念起來還蠻順的"
"泰倫斯, 真是孺子可教也, 沒錯, 基本上我認為寫程式跟寫文章沒有兩樣"
"我一直以為這是兩件事情呢..."
"如果你把這兩件事情當作一件事情, 那麼很多法則的選擇, 就很清楚了, 例如寫注解這件事情"
"寫注解 ?"
"如果你的程式可讀性很高, 哪麼基本上就不用寫注解, 換句話說, 與其花時間把注解寫得很好, 不如好好地改善程式結構, 花時間選一些適當的命名, 讓整段程式看起來, 就像一篇優美易讀的文章, 將來你的麻煩覺得只會少不會多"
"ccw, 感謝分享你的經驗"
ps. 上次看到有人分享一個 一家用漢字寫程式的公司, 大家可以參考看看

C# code     


遍历器<登录信息>.计数遍历(_详细信息集合).从(0).到(_详细信息集合.长度()).每隔(1).执行((当前行索引, 登陆信息) =>
           {
               判断.如果是(XXX).则(() =>
               {
                   判断.如果是(YYY).则(() =>
                   {
                       表格.行(当前行索引).背景色设为(Color.Gray);
                   });
               }).否则(() =>
               {
                   判断.如果是(ZZZ).则(() =>
                   {
                       判断.如果是(KKK).则(() =>
                       {
                           表格.行(当前行索引).背景色设为(Color.Gray);
                       });
                   });
               });
           });

沒有留言: