1

プロジェクトに取り組んでいたため、この質問が頭に浮かび、次のメソッドを作成しました。

private void GoToFirstPage() {
    CurrentPage = 0;
}

ページネーションに関連するいくつかのメソッドで使用します。

それは良い考えですか?またはCurrentPage = 0;、すべてのメソッド呼び出しで代わりに呼び出す必要がありますか?

4

1 に答える 1

2

まず、 の実装を変更する可能性はどれくらいありGoToFirstPageますか? たとえば、これがたとえば PDF ビューアの場合、次のバージョンではページごとのモードだけでなく連続スクロール モードも搭載される可能性があるため、CurrentPage の代わりに CurrentTopLine を保持しますか? その場合、CurrentPage = 0;15 の異なる場所にあり、それらすべてを に変更する必要がある場合if (PageMode) CurrentPage = 0; else CurrentTopLine = 0;、そのうちの 1 つを忘れて 14 しか変更していないため、愚かなバグがコードに忍び寄る絶好の機会です。メソッドでそれを取得しているため、1 か所で変更するだけで済みます。

場合によっては、メソッドに名前を付けると、追加のドキュメントが得られます (コメントとは異なり、最新の状態に保つ必要があるか、コンパイルされないため、変更しても古くなりません)。CurrentPage = 0;この場合、は と同じくらい読みやすく意味があるため、関連性はないと思いますGoToFirstPage();が、多くの場合は関連性があります。

場合によっては、パフォーマンスが問題になります。結局のところ、関数呼び出しは無料ではありません。しかし、この場合、それが問題になるとは想像しがたいです。GoToFirstPageタイトなループで何百万回も電話をかけるわけではありませんよね?

では、これらのどれにも当てはまらない場合、どのように判断しますか? 最も重要な要素は、おそらく言語、コードベースなどにとってより慣用的なものです。典型的な Java プログラムでは、関数のようなものGoToFirstPage();が完全に適合し、SetCurrentPage(0);カプセル化の別のレイヤーとして実装されることさえあります。典型的な Python プログラムでは、current_pageプロパティはクラスのパブリック API の一部でもあります。どちらが良いとも悪いとも言えません。コードを読みやすくするためには、スタイルの一貫性が重要です。

于 2013-02-01T07:44:06.053 に答える