先日twitterのTLでこんなのが流れてきて、
名前は重要です! pic.twitter.com/cMvUdV7LpY
— ビタワン🐕社畜ちゃん連載中【漫画を毎週日曜に投稿】 (@vitaone_) March 1, 2019
それに対する返信として
start/endとbegin/endとか対応する単語をどちらにすべきか?論で2,30分話したことならありますよ!
— お料理エンジニアわかめ (@namawakame) March 1, 2019
というツイートを見たのですが…
どんな言語でどんな機能が前提なのか、そこまで詳細はわからないですが、かつてC++が主戦場だった自分としては
メソッド名 | 期待される機能 |
---|---|
start/stop | 何らかの処理の開始、終了 |
begin/end | イテレータの先頭、終端 |
という対応関係を(無意識のうちに)期待してしまいました。
特にbegin/endの方。
個人的には命名規則は各プロジェクトごと、あるいは各社内ごとに決めといてくれればそれに従いますよー(キャメルケース・スネークケースも大してこだわりなく…)という雑なスタンスなんですが、この手の「標準的に使われている一般的な名前」については実用的な意味で言語標準に従うような機能を実装したほうが好ましいと考えています。
なぜそのほうが好ましいかというと、標準で用意されるアルゴリズム等がそういった標準的な機能を期待した作りになっており、新規に作成するクラスもそちらにそろえることによって「既存の機能を利用できるようになる」から。
そもそも、メソッド名とそれに付随する「期待される挙動」がそろってこそ、オブジェクト指向における多態性を生かせると思っているので、決める際はそのあたりを意識した命名規則を採用してほしい…
テンプレート化もしやすいし。
そんなことを思ってつらつら書いたQiita初投稿ポエムでした。
今後ともよろしくお願いします。
※ちなみにstart/stopの方についてはC++というよりもsystemdなどの起動・停止機能をイメージしました。
※元ツイートはstart/endとなっていましたが、startの対はstopかなあ…