プロジェクトに取り組んでいたため、この質問が頭に浮かび、次のメソッドを作成しました。
private void GoToFirstPage() {
CurrentPage = 0;
}
ページネーションに関連するいくつかのメソッドで使用します。
それは良い考えですか?またはCurrentPage = 0;
、すべてのメソッド呼び出しで代わりに呼び出す必要がありますか?
プロジェクトに取り組んでいたため、この質問が頭に浮かび、次のメソッドを作成しました。
private void GoToFirstPage() {
CurrentPage = 0;
}
ページネーションに関連するいくつかのメソッドで使用します。
それは良い考えですか?またはCurrentPage = 0;
、すべてのメソッド呼び出しで代わりに呼び出す必要がありますか?
まず、 の実装を変更する可能性はどれくらいあり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 の一部でもあります。どちらが良いとも悪いとも言えません。コードを読みやすくするためには、スタイルの一貫性が重要です。