[工具介紹]Regionerate for Visual Studio

  • 9173
  • 0

[工具介紹]Regionerate for Visual Studio

官網與demo的網頁:Regionerate

(小的文章就不喀圖了,上面的demo網頁介紹的很清楚。)

 

如果說GhostDoc是用來快速產生註解的工具,那Regionerate就是用來快速整理程式碼產生region的工具。

 

GhostDoc當你修改了參數個數、命名、排列位置等,只需要一個熱鍵,就可以幫你parse命名,並且將對應的註解重新產生一次,

可以省掉手動清一堆註解的麻煩,而且可以手動設定parse Naming的規則。

 

Regionerate則是能快速的幫你把該程式碼按照分類整理好,

例如property放在一起,field放在一起,建構子放在一起,method放在一起,function放在一起等等..

也可以根據不同的layout樣版來調整自己希望分類的規則,例如public的放一起,protected的放一起,private的放一起。

也就是寫CODE的時候,可以比較不管順序,高興的話就按個熱鍵,他就會幫你排好,而且會產生每個分類的個數。

 

這兩個小外掛一起使用,就可以用最快的時間,產生看起來相當有紀律的程式碼(假象),拿來應付交差應該是綽綽有餘了。

 

範例:

1.只使用GhostDoc,還沒設定region的CODE

namespace Joey
{
    public class JoeyDropDownList : DropDownList
    {
        private int _ReadOnlyWidth = 0;
        /// <summary>
        /// Gets or sets the width of the Readonly.
        /// </summary>
        /// <value>The width of the readonly.</value>
        public int ReadOnlyWidth
        {
            get { return _ReadOnlyWidth; }
            set { _ReadOnlyWidth = value; }
        }

        public enum RenderFormat
        {            
            Text,
            RemoveItem
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="JoeyDropDownList"/> class.
        /// </summary>
        public JoeyDropDownList()
        {
        
        }

        RenderFormat _RenderFormat = RenderFormat.Text;
        /// <summary>
        /// Gets or sets the render template.
        /// </summary>
        /// <value>The render template.</value>
        public RenderFormat RenderTemplate
        {
            get { return _RenderFormat; }
            set { _RenderFormat = value; }
        }

        /// <summary>
        /// 將控制項呈現在指定的 HTML 寫入器中。
        /// </summary>
        /// <param name="writer">接收控制項內容的 <see cref="T:System.Web.UI.HtmlTextWriter"/> 物件。</param>
        protected override void Render(HtmlTextWriter writer)
        {
            switch (RenderTemplate)
            {
                case RenderFormat.Text:
                    if (this.Enabled)
                    { base.Render(writer); }
                    else
                    {
                        if (this.ReadOnlyWidth == 0)
                        { this.ReadOnlyWidth = 13; }
                        int textlength = this.SelectedItem.Text.Length;
                        writer.AddAttribute("value", this.SelectedItem.Text);
                        writer.AddAttribute("type", "text");
                        writer.AddAttribute("readonly", "readonly");
                        writer.AddAttribute("style", "width:" + Convert.ToString(textlength * this.ReadOnlyWidth) + "px;" + "border:solid 0px;" + "text-align:center;");
                        writer.RenderBeginTag("input");
                        writer.RenderEndTag();
                    }  
                    break;
                case RenderFormat.RemoveItem:
                    if (!this.Enabled)
                    {
                        this.Enabled = true;
                        foreach (ListItem i in this.Items)
                        {
                            if (i.Selected != true)
                            { i.Enabled = false; }

                        }

                        base.Render(writer);
                        this.Enabled = false;

                    }
                    else
                    { base.Render(writer); }  
                    break;
                default:
                    break;
            }
                                  
        }

    }
}

 

2.使用完Regionerate的Code

namespace Joey
{
    public class JoeyDropDownList : DropDownList
    {
		#region Fields (2) 

        private int _ReadOnlyWidth = 0;
        RenderFormat _RenderFormat = RenderFormat.Text;

		#endregion Fields 

		#region Enums (1) 

        public enum RenderFormat
        {            
            Text,
            RemoveItem
        }

		#endregion Enums 

		#region Constructors (1) 

        /// <summary>
        /// Initializes a new instance of the <see cref="JoeyDropDownList"/> class.
        /// </summary>
        public JoeyDropDownList()
        {
        
        }

		#endregion Constructors 

		#region Properties (2) 

        /// <summary>
        /// Gets or sets the width of the Readonly.
        /// </summary>
        /// <value>The width of the readonly.</value>
        public int ReadOnlyWidth
        {
            get { return _ReadOnlyWidth; }
            set { _ReadOnlyWidth = value; }
        }

        /// <summary>
        /// Gets or sets the render template.
        /// </summary>
        /// <value>The render template.</value>
        public RenderFormat RenderTemplate
        {
            get { return _RenderFormat; }
            set { _RenderFormat = value; }
        }

		#endregion Properties 

		#region Methods (1) 

		// Protected Methods (1) 

        /// <summary>
        /// 將控制項呈現在指定的 HTML 寫入器中。
        /// </summary>
        /// <param name="writer">接收控制項內容的 <see cref="T:System.Web.UI.HtmlTextWriter"/> 物件。</param>
        protected override void Render(HtmlTextWriter writer)
        {
            switch (RenderTemplate)
            {
                case RenderFormat.Text:
                    if (this.Enabled)
                    { base.Render(writer); }
                    else
                    {
                        if (this.ReadOnlyWidth == 0)
                        { this.ReadOnlyWidth = 13; }
                        int textlength = this.SelectedItem.Text.Length;
                        writer.AddAttribute("value", this.SelectedItem.Text);
                        writer.AddAttribute("type", "text");
                        writer.AddAttribute("readonly", "readonly");
                        writer.AddAttribute("style", "width:" + Convert.ToString(textlength * this.ReadOnlyWidth) + "px;" + "border:solid 0px;" + "text-align:center;");
                        writer.RenderBeginTag("input");
                        writer.RenderEndTag();
                    }  
                    break;
                case RenderFormat.RemoveItem:
                    if (!this.Enabled)
                    {
                        this.Enabled = true;
                        foreach (ListItem i in this.Items)
                        {
                            if (i.Selected != true)
                            { i.Enabled = false; }

                        }

                        base.Render(writer);
                        this.Enabled = false;

                    }
                    else
                    { base.Render(writer); }  
                    break;
                default:
                    break;
            }
                                  
        }

		#endregion Methods 
    }
}

 

可以看到Regionerate幫我把亂丟的field、亂排的property等等,都放在一起了。

Method裡面可以看到,它幫我加上了

// Protected Methods (1)

這行註解。也就是在region裡面,它還會用註解來幫你區隔開不同類型的region。

 

推薦Regionerate這款工具給大家,不用錢、上手又快、效率又好、彈性又高,就給他用力用下去啦。


blog 與課程更新內容,請前往新站位置:http://tdd.best/