方法:クラスプロパティメソッドを適切に呼び出す







当社では、これについて次のように記述されています(プログラマーの指示からの抜粋、「名前の形成に関する推奨事項」の一部)。



バイナリ属性メソッド



バイナリ属性を取得するメソッドの名前は、述語(はいまたはいいえで答えられる質問)でなければなりません。 ほとんどの場合、メソッド名は動詞IsまたはHasで始まる必要があります。



非バイナリ属性を取得および設定するためのメソッド



Get動詞の属性を取得するメソッドの名前に追加できます。 クラス内の属性を取得するメソッドに加えて、属性を設定するメソッドもある場合、これらのメソッドの名前はそれぞれ動詞GetとSetで始まる必要があります。



次に、主に製品シェルに関連し、約5,000のヘッダーファイルを含む約50のプロジェクトで構成される、私が開いている「任意の」ソリューションを取り上げましょう。 そして、どんな名前があるのか​​見てみましょう:







円グラフは、さまざまな「get」メソッドの相対的な分布を示しています。 セマンティック動詞による残りの部分:Is、Can、Has、Need、Should。 注意してください、いくつかの図は有能なPMによって作成されました。



見つかったものの分析は、Setメソッドがパラメーターを受け入れないIs / Setメソッドのペアが少数あることを示しました。 つまり デフォルト値はfalseであり、setメソッドはそれをコックします。この遷移をキャンセルすることはできません。 これは、IsFailed()/ SetFailed()にとって意味があります。 しかし、多くの場合、この制限は、プロパティロジックよりもUIの制限(ユーザーが現在実行できない)に多く従っています。



また、他の人のソリューションを検索すると、根本的に異なる分布が示されたことにも注意してください。 したがって、特定のモーダル動詞の使用は、組織の規則よりもチームの人々に関連している可能性が最も高いです。



メソッドの正しい名前は何ですか? NeedDoSomethingまたはShouldDoSomething? どのモーダル動詞を選択しますか? この質問に答えてみましょう。 そのようなメソッドが6つあることが明らかであり、それらの使用方法を以下に示します。







bool Do( Tction type, IObject* obj ) { //     if( !detector.ShouldDo( type, obj ) ) { return false; } //    if( !callback.MayDo( type, obj ) && !DareToDo( type ) ) { //            //     –   ,   check( !detector.MustDo( type, obj ), ERR_MUST_NOT_MAY ); return false; } //   foreach( executor in executors ) { if( executor.OughtToDo( type, obj ) ) { if( executor.CanDo( obj ) ) { executor.Do( obj ); } check( !detector.MustDo( type, obj ), ERR_MUST_NOT_CAN ); return false; } }; // executor   check( false, ERR_EXEC_NOT_FOUND ); }
      
      








All Articles