1

デザイナーとして、私はパワーとシンプルさのバランスに対応するインターフェースを提供するのが好きです。たとえば、LINQの設計者は、ドット表記とクエリ表記の両方を提供しているため、この原則に従っていると思います。前者はより強力ですが、後者は読みやすく、理解しやすいです。LINQの私の評価に同意できない場合は、とにかく私のポイントを確認してみてください。LINQは単なる例であり、私の投稿はLINQに関するものではありません。

私はこの原理を「ダイヤル可能な力」と呼んでいます。しかし、私は他の人がそれを何と呼んでいるのか知りたいです。確かに「KISS」は一般的な用語だと言う人もいます。しかし、私はKISSをスーパーセット、つまり「消費主義」の実践と見なしています。再び私の例としてLINQを使用すると、私の見解では、ドット表記よりもクエリ表記を常に使用しようとするプログラマーのチームがKISSを実践しています。したがって、LINQの設計者は「ダイヤル可能な電力」を実践しましたが、LINQの消費者はKISSを実践しました。二人は一緒に美しい音楽を作ります。

編集別の例を挙げましょう。2つの使用を可能にする2つの署名を持つロギングツールを想像してみてください。

void Write(string message);
void Write(Func<string> messageCallback);

2つの署名の目的は、次のニーズを満たすことです。

//Every-day "simple" usage, nothing special.
myLogger.Write("Something Happened" + error.ToString() );

//This is performance critical, do not call ToString() if logging is
//disabled.
myLogger.Write( () => { "Something Happened" + error.ToString() });

消費者はシンプルなインターフェイスまたは強力なインターフェイスを選択できるため、これらの過負荷があることは「ダイヤル可能な電力」を表します。KISSを愛する消費者は、ほとんどの場合、より単純な署名を使用し、電力が必要なときに「忙しい」外観の署名を許可します。強力な署名を使用すると、コードのパフォーマンスが重要であることがリーダーに通知されるため、これは自己文書化にも役立ちます。ロガーに強力な署名しかない場合、「ダイヤル可能なパワー」はありません。

つまり、これは完全に一周します。自分の「ダイヤル可能なパワー」のコインがまだ存在しない場合は、それを維持できてうれしいですが、このプラクティスの明確な指定が欠けていると思わずにはいられません。

ps関連しているが、「ダイヤル可能な電力」と同じではない別の例は、Scott Meyerの原則であり、「インターフェイスを正しく使いやすく、誤って使いにくいようにする」というものです。

4

3 に答える 3

1

「漸進的開示」。

「その他」ボタンなどのユーザー インターフェイスで使用されるため、この用語をすでに知っているかもしれません。ただし、概念はより一般的です。

Lidwell、Holden、および Butler による「Universal Principles of Design」より:

   Progressive disclosure involves separating information into 
   multiple layers and only presenting layers that are necessary or relevant. 
于 2011-03-15T15:39:35.860 に答える
1

「ダイヤル」に 2 つの位置/レベルしかない場合は、単にファサードを参照しているように聞こえます。

于 2011-02-02T18:20:41.280 に答える
0

私はこの原則を「ダイヤル可能電力」と呼んでいます。しかし、私は他の人がそれを何と呼んでいるのか知りたいです。

私は個人的に「ダイヤル可能な電力」について聞いたことがなく、業界標準の用語ではないと思います.

LINQ の場合、その設計を流暢なインターフェイスと呼びます。

Fluent インターフェイスは、オブジェクトのすべてのメソッドがそのオブジェクトと同じ型を返すように設計されているため、メソッドの連鎖が容易になります。StringBuilder.Appendオーバーロード、流暢な NHibernate、およびRhinoMocksで同じ流暢な設計が見られます。

JQueryの場合、メソッドチェーンにも流暢なインターフェースを使用していますが、セレクター表記には「クエリ」または「DSL」が適切な名前だと思います。

( Obj-C セレクターは同じ用語を使用しますが、まったく異なるものを説明します。)

これはクエリ DSL として記述されているため、ほとんどの人は、入力としてシーケンスを受け取り、出力としてシーケンスを返すと推測できます。クエリ表記法は、XPath とほぼ同じ機能を実行しますが、その他の機能が追加されています。

Hibernate HQLは、多くの SQL ダイアレクトの上にあるクエリ DSL であり、非常に表面的には、正規表現は、文字列シーケンスを文字列シーケンスの新しいセットに変換するクエリ DSL です (原則として、正規表現用の流暢なインターフェースを作成できますが、おそらくあなたの目を引っ掻くでしょう)。

于 2011-02-02T17:58:12.660 に答える