人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

プログラマーの方に質問です。

良いモジュールインターフェースを考えるコツを教えてください。

クラスや関数を設計する時は、入力と出力のインターフェースが重要になります。

ある値を入力(引数)すると内部でアルゴリズムが処理され結果が出力(戻り値)されるのがプログラムです。
このインターフェースさえ把握していれば、それを使う人は内部アルゴリズムを解析する必要がなく生産性向上へ繋がります。

このような使いやすいインターフェースを設計する上でのコツを教えてください。(クラスや関数のネーミング、引数、戻り値)
宜しくお願いします。

●質問者: jar2
●カテゴリ:コンピュータ インターネット
✍キーワード:アルゴリズム インターフェース クラス プログラマー プログラム
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● hijk05
●19ポイント

DBを使うのなら、DBが正規化されているのならそれにあわせて作ればよいのでは?

>入力と出力のインターフェースが重要になります。

本当に重要かな?

重要だとしたら、そのシステムはゴミです。

◎質問者からの返答

ゴミだと思う理由を教えてください


2 ● dev_zer0
●19ポイント

真似ること


例えばC/Javaなどのプログラム言語には標準関数やクラスがあります

それらの命名規則や引数の順番を真似れば、その言語を知っている人にとっては

そのインターフェースは馴染みやすいものとなります。

また、デザインパターンという考え方もあります。


既存のシステムと別の作り方だと「何でこれだけ違うんだ?」という

違和感を持ちます。既存の作りと「なるべく」合わせましょう。

# もし、あなたが、自分のインターフェース設計の方が断然勝っていて、

# ゴミみたいな既存のシステムと同じでありたくないと断固として思っているならば

# 上を説得してそのインターフェースで作るのもありですが

# その場合、周りの理解を求めましょう。自己満足で痛い目を見ないように

◎質問者からの返答

既存の使用事例を真似すれば、それを知ってる人にとっては学習する必要がありませんね。

ありがとうございます。


3 ● cdaotg
●18ポイント

私の場合は、最初に「シンプルな名前」を付ける事です。


例えばCのsin()関数。関数名を見ればその使い方が容易に分かる、すばらしい設計だと思います。

この様に、「今から作成するモジュールorクラス」にシンプルな名前をつけれる様に努力します。


複数の機能がゴチャゴチャこんがらがっていたりするクラスは、大抵名前もゴチャゴチャします。逆に、シンプルなクラスはシンプルな名前を付けれるものです。

クラス名がHogePiyoFooなら、HogeとPiyoとFooを別々のクラスに出来ないか? 出来るならば、それらのクラス間でのやりとりはどうやってすればいいか? と、名前を手がかりにクラスの設計を考える事が多いです。

◎質問者からの返答

目的が容易に予想できるシンプルな名前。たしかに重要だと思います。

そしてモジュールの分割の基準も名前がシンプルになるようにするのも良いアイデアですね。

ありがとうございます。


4 ● hijk05
●18ポイント

>>入力と出力のインターフェースが重要になります。

>本当に重要かな?

>重要だとしたら、そのシステムはゴミです。

入出力とプログラム(アルゴリズム)の独立性と関係があります。

入出力が変更されたときに、プログラムのコアまで影響があるプログラムは良くないです。

オブジェクト指向のデータのカプセル化がそれにあたります。


5 ● tezuboa
●18ポイント

使用方法をしっかりと明記するのが重要だと思います。


何をするためのモジュールなのか、インプットの指定可能範囲は何か、アウトプットの全ての値の意味など、完全に明記し間違った使われ方がされないようにするのが重要だと思います。


使用方法が明確であれば、中身がどうであれ使いやすく問題も発生しずらくなります。

(逆に説明が貧弱だとどんなに優れたモジュールだとしても間違った使われ方をしたり、使い方がわからないため結局つかわれなかったりと。やっぱり作りっぱなしはNGです。)

また、バグなどがあった際の修正時にも、間違った修正がされることも無くなり、保守面でも有効です。


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ