C# 毛並みのいいモジュールを意識する
概要
C#実装時に.NET Frameworkとの関係を意識して書けるようになると、
実行する前に骨格を把握することができます。
たとえ実装量が増えたとしても、できるだけ.NET Frameworkを利用するようにして
不安定な要素を回避する。これによりプログラムの品質が由緒正しい上品な(品質の良い)ものになっていき利用されやすい、需要の高いものになっていきます。
1.簡単なソースコードで確認する
実装を始めた頃、多くの人が記述してデバッグした簡単な計算を行ったと思います。
データ型の整数型
特に悩むことはないでしょうが、下記を見てください。
int a = 1 + 3;
答え a=4 ですね。
さて、この実装から何がみえてきますか?
- int型の変数 a を使っている
- 変数 a 初期化時に計算を行う
さらに考えてほしいことがあります。それは以下の観点です。
- [数学的に]整数とは
- [.NET Frameworkとの関連]int型とは
整数とは
語源としては同様な、積分の意味[integral],Visual StudioのようなIDE[Integrated Development Environment](統合開発環境)と同じです。物体を区切って積分のようにある場所に集める所作だったり、また「完全」だから「端数がない」という意味です。=整理整頓の数です。
計測できる、それを数値で整理整頓しているというのは、納得する価値を生むということです。
たとえば水や塩は生きていくために必要ですが、そのままでは数えられません。
最低単位の容器が世界共通で決めて数えられる形式で計測すると納得する価値が生まれます。
いわゆる単位を合わせると大きなマーケットコミュニティの中で、毛並みのいい会社やルールを使って信用がある取引が話ができるのです。
つまり、整理したいテーマがあればまず整数をつかう(逆に言えば、整数が使われている箇所は整理整頓したい何かがある)と言ってもいいでしょう。
int型って.NET Frameworkの何??
他のプログラム言語でも出てくるint型。とくに悩まずに使うのもいいでしょう。
しかし、.NET Frameworkのなかで定義されたものの一つです。
名前はintですが、これは「エイリアス(あだ名)」なんです。
intの本名は何で、どこの誰ですか?
intの正体は、System.Int32という.NET Frameworkに定義されたものです。
SystemというC#のプログラムでは、超がつくほど由緒正しいメジャーな家系の流れを汲みます。
その中でも、struct Int32という構造体の名称です。
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
namespace System
{
//
// 概要:
// Represents a 32-bit signed integer.
public readonly struct Int32 : IComparable, IComparable<int>, IConvertible, IEquatable<int>, ISpanFormattable, IFormattable
{
private readonly int _dummyPrimitive;
//
// 概要:
// Represents the largest possible value of an System.Int32. This field is constant.
public const int MaxValue = 2147483647;
・・・(省略)
これは大変安心しますね、世界の誰が記述しても共通のものになるオブジェクトを使っていますから。言葉の通じない国でも苦手な外国語か関係ないです。エラーを相談する掲示板があっても
この共通フレームワークで会話すれば、「よくわからないエラー!」⇒「エラーの原因」⇒「修正後ソースコード」だけは通じますから!
2. .NET Frameworkを上手に使う
今回intについて話しましたが、そのほかのプリミティブな型もクラスも構造体も、
それらからビルドされるモジュールでも同じことが言えます。
毛並みのいいモジュール
大変理想的ですが、.NET Frameworkに準じたモジュールの場合
不具合が起きても実装したプログラム担当者の責任は軽減されたりします。
由緒正しい家柄を受け継いだ毛並みのいいモジュールには、
マイクロソフトが築いた信用という見えないチカラが働くからです。
みなさんは、コップの水の量がおかしいと思うとき、その単位の在り方を疑う事ってありますか?そういう事なんです。
おわりに
プログラムを作成するときに、ぜひ.NET Frameworkを使っている事や数学的な根拠や成り立ちを意識してみてください。知識が増えると面白い見え方で実装できますから。
Discussion