■18745 / inTopicNo.39) |
Re[5]: C#で、、、 |
□投稿者/ Jitta (476回)-(2008/05/15(Thu) 22:17:38)
|
■No18577 (マスク さん) に返信 > ■No18574 (επιστημη さん) に返信 > ソースコードで例を示していただくわけにはいかないでしょうか?
昨日、「おもしろいなぁ」と思った記事。 → http://builder.japan.zdnet.com/sp/10-reasons-programming-2008/story/0,3800086345,20372688,00.htm 第1回、第2回、両方読むべし。
こんな感じかなぁ?何となく、難読化してみた。 「引数が違えば、関係ないメソッドでもオーバーライドできるんだなぁ...」とか考えていたら、何となく、つい。。。後悔しても、もう遅い。。。
enum enumS { n , w , b , l }; int[] r = {1, 2, 10, 11, 12, 20, 21, 22}; public enumS theMethod1(int x, int y) { return ((x > 0 && x < マスの数X && y > 0 && y < マスの数Y) ? セル[x][y] : enumS.l); } public bool theMethod1(int x, int y, enumS c) { enumS h = theMethod1(x, y); return (h != enumS.n && h != enumS.l && h != c); } public bool theMethod2(int x, int y, enumS c) { if (c != enumS.w && c != enumS.b) { throw new ArgumentException(); } if (theMethod1(x, y) != enumS.n) { return false; } ArrayList al = new ArrayList(); foreach (int i in r) { al.AddRange(theMethod1(x, y, c, i)); } return (al.Count > 0 ? true : false); } public Point[] theMethod1(int x, int y, enumS c, int a) { int dx = a % 10; dx = (dx == 0 ? 0 : (dx == 1 ? -1 : 1)); int dy = a / 10; dy = (dy == 0 ? 0 : (dy == 1 ? -1 : 1)); ArrayList al = new ArrayList(); int xx = x; int yy = y; while (xx >= 0 && xx <= マスの数X && yy >= 0 && yy <= マスの数Y) { xx += dx; yy += dy; if (theMethod1(xx, yy, c) == true) { al.Add(new Point(xx, yy)); } else { break; } } if (theMethod1(xx, yy) != c) { al.Clear(); } return al.ToArray(Point.GetType()); }
本を読むときに、「重要」と思ったところに線を引いていました。 ある人が、こういいました。「私は線を引くと、そこに意識が向いてしまって他のところを読まなくなってしまいます。なので、私は線を引きません。」 なるほどぉ...と思い、自分の場合はどうかと、しばらく観察してみました。 それを意識したからかもしれないけれど、線を引いたところに注目する傾向があることがわかりました。 同じような傾向が、動くコードを手に入れたときにもあると思います。 コードが動くことと、コードが理解できていることは違います。 しかし、動いていることを見ることで、自分がわかったと錯覚してしまいます。 そして、コードを理解しようとしなくなる傾向があると思います。
こういう理由で、そのまま動くコードを提供したくありません。
|
|