VS開發中的代碼編寫小技巧——避免重復代碼編寫的幾種方法


上一篇文章中程序員的幸福生活——有你的日子,每天都是情人節,收到了大家的很多好評、鼓勵和祝福,非常感動,真誠的謝謝大家。也希望每個朋友都能保持一個積極向上的心態,去迎接豐富多彩的人生。

在開發過程中,我們經常會遇到大量重復或者類似的代碼需要編寫,當然我們可以通過各種模式來避免這種情況出現,但肯定有些時候我們是無法避免的,那么遇到這種情況,我們該如何快速完成這些重復或類似的代碼的編寫呢。下面來說一下我的方法,當然,如果大家有更好的方法,希望能分享出來。

大量重復代碼——switch/case枚舉的遍歷

說到大量重復類似代碼,就不得不說switch/case,如果一個枚舉里面有幾十項,在switch的時候,每一項都要寫一個case,如下所示:

enum GoldenTagFieldIndex
{
    Tag,
    Id,
    Type,
    Table,
    Desc,
    Unit,
    Archive,
    Digits,
    Shutdown,
    Lowlimit,
    Highlimit,
    Step,
    Typical,
};

編寫switch/case后,達到的效果:

GoldenTagFieldIndex index = GoldenTagFieldIndex.Tag;
switch (index)
{
    case    GoldenTagFieldIndex.Tag:
    case    GoldenTagFieldIndex.Id:
    case    GoldenTagFieldIndex.Type:
    case    GoldenTagFieldIndex.Table:
    case    GoldenTagFieldIndex.Desc:
    case    GoldenTagFieldIndex.Unit:
    case    GoldenTagFieldIndex.Archive:
    case    GoldenTagFieldIndex.Digits:
    case    GoldenTagFieldIndex.Shutdown:
    case    GoldenTagFieldIndex.Lowlimit:
    case    GoldenTagFieldIndex.Highlimit:
    case    GoldenTagFieldIndex.Step:
    case    GoldenTagFieldIndex.Typical:
    default:
        break;
}

這樣的代碼,如果純手寫,既枯燥,又浪費時間,但是代碼必須要寫,如何快速的生成這些switch/case代碼才是關鍵,我總結了我在編寫代碼過程中使過的五種方法:

  1. VS直接生成——只適用於2010版本以上的VS,而且必須是DotNet開發
  2. ReSharper一鍵生成——只適用於DotNet開發
  3. 通過快捷鍵進行操作
  4. 使用代碼生成器
  5. 使用Excel完成代碼生成

VS自動生成

當進行DotNet開發的時候,這種switch/case可以很容易的使用2010以上版本的VS自動生成,當然也只能是DotNet,如果是C++,那么不好意思了,不支持。

在VS中可以通過一個switch的snippet來自動生成枚舉的項的case語句。具體操作步驟:先寫switch,然后按Tab鍵,然后寫入枚舉變量名,然后按Enter鍵,這樣其余所有代碼就可由VS自動完成了。是不是很方便呢,下面直接看圖:

VS自動生成

DotNet神器——ReSharper一鍵生成

說到ReSharper,就不得不說,DotNet開發人員實在是太幸福了,各種標准庫,各種幫助類,就連輔助工具也堪稱神器,讓我等在工作中使用C++的碼農羡慕嫉妒恨啊。

直接上圖,看了圖,你就知道什么是神器了:

Resharper一鍵生成

貌似裝了ReSharper后,VS的自動完成功能就不好用了,不知道只有我這樣,還是普遍現象。不過既然用了ReSharper,而且也這么好用,那么就不去計較VS的自動完成了。

ReSharper還有很多強大的功能,等待你的發現。

通過快捷鍵進行操作

VS自動完成、ReSharper一鍵生成固然十分方便,以至於其他方法都弱爆了,但是這是有前提的,只有DotNet開發才有這么感人的功能。而C++呢,我們只能求助於下面的方法了。

對於程序員來說,想要高效的完成代碼的編寫,就需要熟練掌握各種快捷鍵,有了這些方便強大的快捷鍵,那么完成這些重復的switch/case,只是分分鍾的事。

下面是操作過程中用到的快捷鍵:

  • Alt:選擇代碼中某幾列
  • Ctrl + C :復制
  • Ctrl + V :粘貼
  • Ctrl + H :替換
  • Tab :添加制表符
  • Shift + Tab :取消制表符

通過快捷鍵完成switch_case編寫_修改后

如果想了解更多VS快捷鍵的介紹,請參考小坦克的這兩篇文章:Visual Studio 常用快捷鍵  和 Visual Studio 常用快捷鍵 (二)

使用代碼生成器

做Web開發的朋友應該對代碼生成器不是很陌生,至少我當初寫三層時,就經常使用代碼生成器來生成操作數據庫的代碼,代碼的編寫效率那叫一個快。雖然現在轉戰C++了,但是代碼生成器還是能夠派上用場的。

我所接觸過的代碼生成器主要有三種:

  • CodeSmith:CodeSmith是我接觸的最早的一個代碼生成器,個人感覺功能十分強大。自從有了他,就基本上不再用其他的工具。詳細的使用資料可以參考官方的幫助文檔,或者參考Terrylee的這篇文章 CodeSmith開發系列資料總結
  • T4:T4是微軟的代碼生成引擎,由於本人沒有使用過,所以功能上就不做評論了。
  • 動軟代碼生成器:動軟代碼生成器是國產的一款軟件,本人也只是在操作SQL的時候用過,對於數據庫的支持功能比較強大。

由於T4、動軟代碼生成器用的不多,所以只介紹一下使用CodeSmith生成switch/case代碼的方法。

CodeSmith語法什么的,這里就不介紹了,直接上模板:

<%@ Template Language="C#" TargetLanguage="C#" %>
<%@ Assembly Name="CodeSmith.CustomProperties" %>
<%@ Property Name="List" Type="CodeSmith.CustomProperties.StringCollection" Category="Custom" Description="This is the list." %>

<% for (int i = 0; i < List.Count; i++)
{ %>
case <%= List[i].Trim().Trim(',') %>:
<% 
} %>

有了此模板就可以很方便的生成代碼了:

通過CodeSmith完成switch_case編寫

使用Excel完成代碼生成

相比於以上兩種方法,使用Excel可能會麻煩一些,但是這里只是提供一種思路和方法,在真正遇到問題的時候,要具體問題具體對待。其實Excel功能是很強大的,能熟練的使用Excel,在很多情況下,是可以提高工作效率、編碼效率等很多效率的。廢話不多說,下面就演示一下如何使用Excel來完成代碼的生成:

使用Excel完成代碼生成

總結——善於使用工具可以提高效率

當我們遇到switch/case等大量重復或相似代碼的時候,最好不要純手敲,或者通過復制粘貼后再修改,這樣不僅效率低,而且對自身也沒有提高,可以說是費力不討好。

而如果能夠熟練的使用一些輔助工具,那么就可以事半功倍,大大的提高工作效率,何樂而不為呢。

假設你是一個武林高手,如果再能得到一個神兵利器,那么是不是可以天下無敵了呢。

你的編程水平很高,能夠使用各種模式來避免重復代碼,如果再能熟練的使用VS(快捷鍵)、代碼生成器等工具,那么恭喜你,終於可以從大量重復的體力勞動工作中解脫了,終於,整個世界清靜了。

以上幾種只是我比較常用的方法,消滅重復代碼編寫的方法還有很多。如果你有比較好的方法,那么希望你能分享出來,本人必將不勝感激。

我是緣生夢,謝謝您的關注!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM