所以我最近決定我的編碼風格有點笨拙。麻煩的是,我似乎無法走到一個階段,在那裏我可以找到將其簡化爲更少效率代碼的方式。如何簡化我的凱撒移位加密算法c#的實現?
我是在一個團隊編碼情況前些天試圖代碼使用TDD一個自動換行功能。當我坐在駕駛座位上時,我大部分時間都在使用String.Split()和if語句。我在編碼的那個人問爲什麼這麼複雜,然後用簡單的遞歸單線程返回所需的值,並用一些條件在完成時將他從遞歸循環中引導出來。
所以我的問題是這樣 - 下面是一些代碼,我已經寫上做只使用小寫字母和空格的字符串輸入凱撒移位加密。單元測試通過,我相信我已經實現了可能發生的各種情況。
在堅果殼會怎麼你們簡化下面的代碼,以使其更具可讀性,更高效?
我很欣賞這個的幫助,因爲在這一天,我需要讓我的編碼風格更簡潔和更簡單的和無法弄清楚,以最好的地方開始的結束。
乾杯
代碼在C#:
public static string Encrypt(string inputString, int shiftPattern)
{
StringBuilder sb = new StringBuilder();
char[] alphabet = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
//y = x + 3 (mod 26)
foreach (var letter in inputString.ToLower())
{
if (!alphabet.Contains(letter))
{
return "The " + letter + " Character was not in the sample set, please ensure you only use letters";
}
var res = Array.IndexOf(alphabet, letter) + (shiftPattern % 26);
if (res >= 26)
{
res = res - alphabet.Length;
sb.Append(alphabet[res]);
}
else if (res < 0)
{
res = alphabet.Length + res;
sb.Append(alphabet[res]);
}
else
sb.Append(alphabet[res]);
}
return sb.ToString();
}
我會建議http://codereview.stackexchange.com/,他們會給你想要的東西。 – Snowbear 2011-03-17 09:32:53
+1 Snowbear ...我不知道codereview! :D – Jonathan 2011-03-17 09:42:41
啊 - 不知道那個網站。感謝您的高舉。如果你在一個負數傳遞 – Morn 2011-03-17 10:03:56