C#とWindowsと最上と土川

CentOS・MacOSぶっ殺すマン PC中毒・プログラマ 一応、高校生かもしれない。高校の部活の社畜です。KOROSARERU☆(ガチ) 現在、インスコ不要のC#開発環境を作っています。できました。次期Ver (CN:COSMOS)よろしく!@Csharp_GO

今日のウンcode (C#_GO)2017/8/9

今日から、腹筋などの筋トレをしてからC#_GOなどの開発の続きをするようにした。

今まで運動を全くしてこなかったから分からなかったが、汗を書いた後のコーディングは意外と捗る。だが、今日もウンcodeを量産し続ける。

今日は三日前から始めたWindowsFormのanchorプロパティをC#_GOのデザイナーに対応させる作業の最終作業であるコンパイル部分の対応作業を行った。

そのAnchorプロパティへの対応作業だが、案外大変だった。C#_GOのデザイナーではデザインしたフォームのプレビューに本物のコントロールを利用している。なので、プレビュー部分のコードは非常に複雑。去年の夏に締め切りが近く魔剤マシマシmodeでコーディングしたお陰で、開発者である自分でも仕組みがよくわからない。

で、具体的にプレビューの方法としてはデザイナーファイルから読み込んだデータからコントロールを動的に生成して、デザイナーファイルからプロパティのデータを受取、処理している。

例えば、TextBoxのMultilineプロパティなら、デザイナーファイルにtrueとあれば

***********************************************************************

if(value == "true"){

       textbox[i].Multiline = true;

}else{

       textbox[i].Mulitiline = false;

}

*************************************************************************

のように処理をしている。

まだ、TRUE・FALSEのように2つしか選択肢がないものなら楽だ。

一番厄介なのは、anchorのように与えるものが複数・数が一定でないものだ。

Anchorプロパティは

************************************************************************

textbox[i].Anchor =  AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right |AnchorStyles.Left;

**************************************************************************

のように記述する。最初自分はこれを約百行のウンcodeで解決しようとしたが...同様他のコントロールでも同じように実装したところ、最近キレイにしてやっと1000行以内に収まったCODEは2000行という可読性がかなり低いものになってしまった。ウンcodeというよりは、ただのクソース。

結果初めてTwitterでHELPすることにした。

そしたらC#の神 岩永 さんからこんな返信が!!!!!!!!

素晴らしい、なんてきれいなコードだ...

AnchorStyleを返すメソッドを作るという考えすら浮かばなかった(いつもintやstringを返すものしか作ったことがない)

同じようにコードを改良できそうなところが複数あり、修正していると追加機能をつけたにも関わらずコードの長さは元の1000行。たぶんもっと洗練できると思う。

岩永さんのように、しっかりとしたきれいなコードを書けるように今日も1日頑張るぞい(深夜)