裏口からのC#実践入門
4-3 散在する情報
相互に強く関連する情報は散在させないでひとまとめに扱うべき。
説明用コードなので、何がしたいのかは関係ないので注意。
using System; namespace Uraguchi.Scene4 { public struct Tenshi3TriplePoint { public double X, Y, Z; } public class Tenshi3PointInfo { public static Tenshi3TriplePoint[] point = new Tenshi3TriplePoint[10000]; internal static void Reset() { point = new Tenshi3TriplePoint[10000]; } } public class Tenshi3 { public static void Run() { Tenshi3PointInfo.point[0].X = 0; Tenshi3PointInfo.point[0].Y = 0; Tenshi3PointInfo.point[0].Z = 0; Tenshi3PointInfo.point[1].X = 1; Tenshi3PointInfo.point[1].Y = 1; Tenshi3PointInfo.point[1].Z = 1; Console.WriteLine(CalcDist(0, 1)); } private static double CalcDist(int index1, int index2) { Tenshi3PointInfo.Reset(); var pt1 = Tenshi3PointInfo.point[index1]; var pt2 = Tenshi3PointInfo.point[index2]; return Math.Sqrt( (pt1.X - pt2.X) * (pt1.X - pt2.X) + (pt1.Y - pt2.Y) * (pt1.Y - pt2.Y) + (pt1.Z - pt2.Z) * (pt1.Z - pt2.Z) ); } } }
4-4 多すぎるクエリ
Enumerable と Array を意識する。
using System; using System.Linq; namespace Uraguchi.Scene4 { public class Tenshi4 { public static void Run() { var start = DateTime.Now; var ar = Enumerable.Range(0, 10000).ToArray(); int sum = 0; for (int i = 0; i < ar.Count(); i++) { sum = sum / 2 + ar.ElementAt(i); } Console.WriteLine(sum); Console.WriteLine(DateTime.Now - start); } } }