1

私は matlab で単純なタグ マネージャー クラスを作成しましたが、クラス メソッドに適切な名前を付けるのに苦労しています (または、考えすぎかもしれません ;-)。クラスは と呼ばれtag_managerます。明確な API と実装に関する私の質問は次のとおりです。

  • タグを追加するには、メソッドを呼び出す必要がありますaddadd_tag? 削除する場合も同様です。
  • タグの名前を変更するには、メソッドを呼び出す必要がありますrename_tagrename?

_tagメソッドが何に基づいて動作しているかが明確になるように、私はいつも接尾辞を追加したいと思っています。

  • nbr_tags現在保存されているタグの数を追跡するカウンターです。この数にアクセスする必要がある場合があるため、タグのリストを調べてエントリ数を計算する代わりに、クラス メソッドを介してこの値を返すことを考えました。return_nbr_tags行くべき道ですか、それとももっと簡潔に名前を付けることができますか?
  • 多くの場合、タグのインデックスを知る必要があります。これは、他のマトリックスの要素を検索するために使用されます。inx()コードが長くならないように、 の略であるはずのこのメソッドを簡単に呼び出しましたreturn_tag_index。今日、私は何inx()の略かを知っていますが、今から 2 週間後にはおそらく思い出せなくなるでしょう。では、これらの種類のメソッドに名前を付ける最良の方法は何ですか?

クラス定義は次のとおりです。

properties (SetAccess = private, GetAccess = public)
    tag_names = {}; % store the tags
    tag_rel_indx = []; % the relative tag index
    tag_abs_indx = []; % the absolute tag index
end

properties (SetAccess = private, GetAccess = public, Hidden = true)
    nbr_tags = 0;
    abs_tag_counter = 0;
end

methods
    % add single tag to list. should be 'add' or 'add_tag'?
    function obj = add_tag(obj, name)
    end

    % remove single tag from list
    function obj = remove_tag(obj, name)
    end

    % short-cut for 'return_tag_index'
    function indx = inx(obj, name)
        indx = return_tag_index(obj, name);
    end

    % rename tag
    function obj = rename_tag(obj, old_name, new_name)
    end

    % re-order tags by name
    function obj = reorder_by_name(obj)
    end

    % return number of tags stored in tagmanager
    function nbr_tags = return_nbr_tags(obj)
        nbr_tags = obj.nbr_tags;
    end

end

どうもありがとう!

4

2 に答える 2

1

非常に明示的な関数名 (コードを理解するのに非常に役立ちます) を使用することと、開発と使用が容易なコードを作成することの間には、常にトレードオフがあります。メソッドのショートカット名を作成する必要がある場合は、明示的な関数名に大きく移行したことを示しています。

あなたの場合、タグ マネージャーを作成しているのでtag、メソッドから削除し、代わりにタグ マネージャー クラスを としてインスタンス化する規則を開始し、tags = tagManager;タグを追加するメソッドが または のいずれtags.add(...)かで記述されるようにしますadd(tags,...)。ただし、タグ以外のものを追加する場合は、より明示的なメソッド名を追加すると役立ちますtags.addGroup。あなたの index メソッドは になりますindex(tags,name)。これは、私の目には、短く明確です。

PS: なぜreturnNumberOfTagsメソッドがあるのですか? プロパティから読み取るだけで、必要に応じて set/get メソッドを追加できます。

于 2012-08-09T12:27:43.257 に答える
1

私の意見では、以前に他の人のコードを使用する必要があったため、メソッド/関数名が明確で説明的であると非常に役立ちます。私はむしろ誰かが自分の関数の名前で冗長になりたいと思っていますが、同時に過度に冗長になりたくありません。

たとえば、タグ関数の戻り値。個人的には のような名前を付けGetNumberOfTagsます。特定の値を設定するために使用する関数については、SetParticularValue.

ただし、アンダースコアからは離れています。これはおそらく、職場でのコーディングの実践から得た習慣にすぎません。

覚えておくべき最大のことは、クラス全体で一貫していることです。関数が完全に明確ではない場合は、有用なコメントを忘れないでください =P 戻ってきて誰かのコードを作り直さなければならず、どの変数が使用されているか、および関数が何のために使用されているかについての情報が本当に汚れている場合、それは恐ろしいことです本当にすることを意図しています;)。

于 2012-08-09T11:54:40.520 に答える