iT邦幫忙

DAY 27
1

軟體路上不孤單,給我SSD,學習之路狂飆系列 第 27

軟體路上不孤單Day27-寫程式就像寫文章-排版

  • 分享至 

  • xImage
  •  

文不如表,表不如圖!
那一表呢?三千里!不是啦~
此表非彼表~(又扯遠了XD
文不如表,表不如圖!
那一表呢?三千里!不是啦~
此表非比表~(又扯遠了XD

今天想要介紹的是排版的觀念,那根圖表有什麼館係呢?
其實是沒什麼關係!但是也是有點關係!因為文字密密麻麻的,所以需要兩好的排版才會讓人一目了然。雖然文不如表,但是排版若排的好,「文」也是會有像「表」一樣的功能的!

再一開始參加鐵人賽的前幾天,因為沒有寫文章的習慣,因此寫出來的文章-之的很難看!怎麼說呢,因為我都沒有留白的概念!一段接著一段好像要省空間似的,反倒讓人要很用力才知道,我到底在講什麼。(感謝前輩們的提醒阿,後來我去改掉了。)雖然現在分段的功力還不是很好,但至少我有留白的觀念了!

寫程式也是如此!

將相關的函示、變數放在附近,對後來維護的人看起來也比較輕鬆。適時的留白也會讓閱讀程式碼的人更容易瞭解程式碼的內容。

看看這個沒有留白的範例:

using System;
using System.Windows.Controls;
using Microsoft.Phone.Controls.Primitives;
namespace Microsoft.Phone.Controls {
    abstract class DataSource : ILoopingSelectorDataSource {
        private DateTimeWrapper _selectedItem;
        public object GetNext(object relativeTo) {
            DateTime? next = GetRelativeTo(((DateTimeWrapper)relativeTo).DateTime, 1);
            return next.HasValue ? new DateTimeWrapper(next.Value) : null; }
        public object GetPrevious(object relativeTo) {
            DateTime? next = GetRelativeTo(((DateTimeWrapper)relativeTo).DateTime, -1);
            return next.HasValue ? new DateTimeWrapper(next.Value) : null; }
        protected abstract DateTime? GetRelativeTo(DateTime relativeDate, int delta);
..(略)
        public event EventHandler<SelectionChangedEventArgs> SelectionChanged;
    }
..(略)
}

如果給予適當的留白:

using System;
using System.Windows.Controls;
using Microsoft.Phone.Controls.Primitives;
namespace Microsoft.Phone.Controls {
    abstract class DataSource : ILoopingSelectorDataSource {
	
        private DateTimeWrapper _selectedItem;
		
        public object GetNext(object relativeTo) {
            DateTime? next = GetRelativeTo(((DateTimeWrapper)relativeTo).DateTime, 1);
            return next.HasValue ? new DateTimeWrapper(next.Value) : null; 
		}
		
        public object GetPrevious(object relativeTo) {
            DateTime? next = GetRelativeTo(((DateTimeWrapper)relativeTo).DateTime, -1);
            return next.HasValue ? new DateTimeWrapper(next.Value) : null; 
		}
		
        protected abstract DateTime? GetRelativeTo(DateTime relativeDate, int delta);
	
	..(略)

        public event EventHandler<SelectionChangedEventArgs> SelectionChanged;
    }

	..(略)

}

是不是感覺好很多呢!
另外,如果有留白但卻多了註解那這樣的排版會變怎樣呢?

public class Reporter {
    
    /**
    *  Reporter listener 的類別名稱
    */
    private String className;
    
    /**
    *  Reporter listener 的屬性
    */
    private List<Property> properties = new ArrayList<Property();
    
    /**
    *  增加屬性
    */
    public void addProperty(Property property){
        properties.add(property);
    }
}

是不是感覺還好,只是有那麼一點怪,因為多了一些註解。
若改成這樣:

public class Reporter {
    
	private String className;
	private List<Property> properties = new ArrayList<Property();

	public void addProperty(Property property){
        properties.add(property);
	}
}

各位覺得如何呢?

當然,不是說一定不要加註解,或一定要怎麼樣排版。我相信每個團隊都會有自己的 guideline ,只要大家統一好。因為相同的排版(好的排版)一定對程式碼的可讀性有一定的貢獻。今天介紹排版只是想再強調一下,它其實還滿重要的!

文章導覽
全系列連結
上一篇
下一篇


上一篇
軟體路上不孤單Day26-專案版本控制2
下一篇
我的IT人生之DAY19-忙
系列文
軟體路上不孤單,給我SSD,學習之路狂飆31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言