ペアプログラミングって面白い

先日、後輩とペアプログラミングしてみた。
やってみると意外とアイデアが浮かんできて面白かったのでメモ

やりたいこと
データテーブルの管理ナンバー列の値を使って in のリストを作成。
初期ソース


private string getInListString(DataTable dt)
{
string inList = "";
foreach (DataRow row in dt.Rows)
{
string kanri_no = row["kanri_no"].ToString();
inList += "'" + kanri_no + "',";
}
if (inList.Length > 0)
{
inList = inList.Substring(0, inList.Length - 1);
}
return inList;
}
自分:このままだった管理ナンバー重複するから、重複を除いて。
後輩:(`Д´)ゞラジャー!!
修正ソース

private string getInListString(DataTable dt)
{
List lstKanri = new List();
string inList = "";
foreach (DataRow row in dt.Rows)
{
string kanri_no = row["kanri_no"].ToString();
if (!lstKanri.Contains(kanri_no))
{
inList += "'" + kanri_no + "',";
lstKanri.Add(kanri_no);
}
}
if (inList.Length > 0)
{
inList = inList.Substring(0, inList.Length - 1);
}
return inList;
}
自分:OK。動きは問題ないけど、ちょっとカッコ悪くない?
後輩:う〜ん。Linqとか使えないですかね?
後輩:あ、そろそろ交代っす。先輩カッコよくたのんます。
自分:OK。ちょっとやってみる。

private string getInListStringLinq(DataTable dt)
{
var query = from DataRow row in dt.Rows where row["kanri_no"] != DBNull.Value select "'" + row["kanri_no"].ToString() + "'" ;
return string.Join(",", query.ToArray());
}
自分:こんな感じでどう?

後輩:かっこいいっす!でもこれって、また重複してますよ。
自分:(`Д´)ゞラジャー!!修正します。

private string getInListStringLinq(DataTable dt)
{
var query = (from DataRow row in dt.Rows where row["kanri_no"] != DBNull.Value select "'" + row["kanri_no"].ToString() + "'").Distinct();
return string.Join(",", query.ToArray());
}
自分:どう?
後輩:完璧っす!
って感じで、最初11行のメソッドが条件追加したのに逆に2行になりましたw
ペアプログラミングしてなかったら、こうはならなかったと思う。
普段と違うパターンの発想が出てくるのもペアプログラミングのメリットだと思う。逆にデメリットは、周りから遊んでると思われることかも(笑)