2015-02-01から1ヶ月間の記事一覧
4-9 異常ケースで致命的な処理を止めないケース using を使う際には Dispose を適切に。using はすっごい便利なので、使わない手はない! using System; namespace Uraguchi.Scene4 { public class Tenshi9Counter { public int Count { get; set; } } publi…
4-8 永遠に実行されないコード Assert で引っかける、と。Assert を記述するくらいなら、エラー処理書いた方が良いと思う。 また、Xamarin では対象行を有効にする方法がわからなかった・・・。 using System; using System.Linq; using System.Diagnostics;…
4-6 ユニークさが確保されているのに判定する 仕様をMSDNよく見て理解すること、ということかな。 Dictionary(TKey, TValue).Add メソッド (System.Collections.Generic) using System; using System.Collections.Generic; using System.Linq; namespace Ura…
4-5 冗長な判定 as と is の動作を確認。 as (C# リファレンス) is (C# リファレンス) using System; namespace Uraguchi.Scene4 { public class Tenshi5 { public static void Run() { object a = "Hello"; if (a is string) { var b = a as string; Consol…
4-3 散在する情報 相互に強く関連する情報は散在させないでひとまとめに扱うべき。 説明用コードなので、何がしたいのかは関係ないので注意。 using System; namespace Uraguchi.Scene4 { public struct Tenshi3TriplePoint { public double X, Y, Z; } publ…
シーン4 アルゴリズムの問題 4-1 再帰に頼りすぎ 再帰は難しい。自分の技術力不足が原因だが、不慣れなので使われると読みづらいというのもある。 再帰は巨大データには使ってはいけない(スタック不足の原因になるので)。 4-2 不変ではないクラス readonly…
シーン3 環境の問題 3-1 GACに入れたがる症候群 GAC という言い方を知らなかったが、Oracle の DataAccess で困ったことになったことがある。 assembly に入ってて、exe ファイルと同じ場所に本当に読み込ませたいバージョンの DLL ファイルを置いたけど、ぜ…
2-12 それはリソースの無駄遣い とりあえずIEnumerable使っておけば間違いない? using System; using System.Collections.Generic; using System.Linq; namespace Uraguchi.Scene2 { public class Tenshi12 { private static double Calc100Average(IEnumer…
2-11 ループとロジックが入り交じっている これは・・・、わかりづらいね。 using System; using System.Linq; namespace Uraguchi.Scene2 { public class Tenshi11 { public static void Run() { int[] ar = { 5, 2, -1, 1, 4 }; int[] arWithoutMinus = ar…
2-9 XElement が Nullable にキャスト可能と知らない sum を int? として定義しているのは、その後の val が int? なため。 using System; using System.Xml.Linq; namespace Uraguchi.Scene2 { public class Tenshi9 { public static void Run() { int? sum…
2-8 過剰な例外への依存 例外は使いどころが難しいけど、コストがかかるから止めるとかそういうものじゃないかな。 差は凄いけど。 using System; namespace Uraguchi.Scene2 { public class Tenshi8 { public static void Run() { var start = DateTime.Now…
2-6 古い XSLT XSLT、名前自体は見たことあるけど、どんなものか知らない。 XSL Transformations - Wikipediaサンプルに出てきたURL、見てみたらIISのトップだった。見た目で一瞬怪しいサイトとか思ってゴメンなさい。 IIS Windows ServerXSLTを使う場合は今…
2-3 WinForms への固執 ソース直編集ができるからWPF有利ってのはどうかなぁ。 理由としては弱いかも。 2-4 Windows API の直接呼び出し Macなので試すことはできなかった。 ネイティブコードにしてもオーバーヘッドがあるので、それよりも環境依存に気を付…
今日は13日の金曜日だった。と、これを見て気が付いた。ピラッ #鷹の爪 #ジェイポン pic.twitter.com/2wgzqSDnqT— 吉田@鷹の爪団(本物) (@yoshida_justice) 2015, 2月 12
シーン 2 ライブラリの問題 2.1 旧世代のコレクションを使う C# で何かやったことはないので、Hashtableの存在知らなかった。 System.Collections 名前空間は使わず、System.Collections.Generic を使うこと。 using System; using System.Collections; usin…
1-31 委譲すべきケースで継承する 委譲はいいんだけど、外部からアクセスさせるのはどうかなぁ。 using System; namespace Uraguchi { class Tenshi31お財布 { public int 所持金 { get; set; } } class Tenshi31僕 { public Tenshi31お財布 Saifu { get; se…
昨日の更新忘れと一緒に。 1-24 別の名前空間での同じ名前の多用 こんな書き方ができるとは。 ただ、まぁわかりづらいと思うので避けた方が良い気がする。 using System; using FPath = System.IO.Path; namespace Uraguchi { public class Tenshi24 { publi…
1-23 無駄に深いクラス階層 クラス内クラスは使いどころに注意。 普通に使う場合はテンシちゃんの通りに無駄に複雑にしないように。 using System; using System.Collections.Generic; using System.Linq; namespace Uraguchi.Scene1 { public class Tenshi2…
1-21 readonly が使えるケースで普通の変数を使う 初期化構文 -> コンストラクタの処理順。 using System; namespace Uraguchi { public class Tenshi21 { private readonly double x1 = 4989, x2 = 893, distance; public void Report() { Console.WriteLin…
1-20 const が使えるケースで普通の変数を使う 定数は大文字で書いちゃった。 規約的にはよくないようだ。 大文字の使用規則 だけど、クラス名、メソッド名、プロパティと全てPascalだからなんか見辛い気がする。 using System; namespace Uraguchi.Scene1 {…
1-18 using 文を使わない症候群 IDisposableインターフェイスの実装とusing文の組み合わせが鉄板。 1-19 Mixed Language Programming を知らない VBのクラスを使えるという話。 MacでVBをどう扱うかわからなかったのでパス。
1-16 全部public症候群 フォント的に、大文字と小文字のLの判別がすんごいしにくかった。 Javaの流れて言うと、カプセル化しようねって話。 この項で衝撃的だったのは、アクマくんとテンシちゃんが意外といい関係だということ。 1-17 全部static症候群 stati…
1-13 ポインタの利用 C#のポインタはデメリットの方が多い 99%、ポインタは死ぬまで使わない 1-14 無駄なキャストの多用 キャストをなるべく行わないようにする。 基本的に、自分はList使うかも。 型の誤用は真っ先に訂正すべき 1-15 全部1クラス症候群 Cust…