オフィス狛 技術部です。
業務システムを作成していると、どうしてもレガシープログラミングを行ってしまう傾向があります。
たぶん、「現行システムの改修だから(現行プログラムがレガシーだから)」とか、
「フレームワークのバージョンを上げるのは影響が大きい」など理由はあると思います。
ですが、モダンプログラミングは可能な限り取り入れたいです。
まずは以下のプログラムをご覧ください。
public string GetAcceccToken() { byte[] randomNumber = new byte[16]; RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider(); rngCsp.GetBytes(randomNumber); StringBuilder accessToken = new StringBuilder(); for (int i = 0; i < randomNumber.Length; i++) { accessToken.AppendFormat("{0:x2}", randomNumber[i]); } return accessToken.ToString(); }WebAPIなどで利用されるアクセストークン(ランダムな文字列)を作成するメソッドです。
今回は繰り返し部分を簡略化させていきます。
for (int i = 0; i < randomNumber.Length; i++) { accessToken.AppendFormat("{0:x2}", randomNumber[i]); }昔の参考書ではお馴染みの繰り返し文です。
これをforeachで書き換えると、
foreach (byte bt in randomNumber) { accessToken.AppendFormat("{0:x2}",bt); }
次は、匿名メソッドを利用したArray ForEachで書き換えてみます。
Array.ForEach<byte>(randomNumber, delegate(byte bt) { accessToken.AppendFormat("{0:x2}", bt); });
最後は、匿名メソッドをラムダ式を使って書き直してみます。
Array.ForEach<byte>(randomNumber, bt => { accessToken.AppendFormat("{0:x2}", bt); });
メソッド内が単文の場合は、{}は省略できます。暗黙の型指定が可能な場合は、<byte>も省略できます。
Array.ForEach(randomNumber, bt => accessToken.AppendFormat("{0:x2}", bt));
最近C#初めた人にとっては、当たり前の書き方なのでしょうが、
C#に数年のブランクがある人は、ちょっと戸惑ってしまうかもしれません。
何事も慣れだとは思いますが・・・。
0 件のコメント:
コメントを投稿