FC2ブログ

面倒くさがりのためのコーディングルール

この記事はMicroMouse Advent Calendar2019の21日目の記事です。

前回の記事は枝ピロさんの「今年度機体の反省」でした。

完走できないと悲しいですよね。マイクロマウスってやればやるだけやることが

増えていくし、うまく行かないことがほとんどなので、スケジュールを立てたり

モチベーションを保つことが非常に難しいというか無理だと思っています。

なので、自分はモチベーションを保つために、展示イベントへ参加したり、

ツイッターへ進捗を上げたりしています。1ヶ月くらいの頻度で

イベントをつくれば、そこを目標になんらかしらの機能を追加する

みたいな短期的なスケジュールとモチベーションで開発しています。


◆はじめに

2週間振りの更新ですが、すでに辛いです。

週一で更新している人は何を食べればそんなことができるのか・・・


もともとAdventCalendarに登録したときはzilconiaちゃんのサンプルコードを

更新して、サンプルコードの解説記事を書くつもりでしたが、バグが潰せず

更新できなかったのでプログラムの書き方でも紹介しようと思います。

独学なのでいろいろツッコミを頂けるとうれしいです。





◆zilconiaちゃんについて
zilconia

冒頭でいきなり登場してますが、まずはzilconiaちゃんについて紹介します。

「zilconia」はマイクロマウスのチャンピオンが製作したオープンソースの

マイクロマウスです。詳しい紹介は製作者のブログにお任せするとして、

私はそのサンプルコードを書いています。設計データは「ここ」、

サンプルコードは「ここ」から落とせるので、是非ご活用下さい。

※サンプルコードはBitBucketの方が最新です。
   そのうちバグフィックスや設計データも掲載していきます。

zilconiaちゃんってちゃんを付けたくなるくらいカワイイのですが、
製作者が走らせると地方大会で準優勝する程度のスペックを秘めているので、
オープンソースだからといって油断していると私も負けそうです。
なので私がサンプルコードを書くことで宇宙人成分を薄める作戦です(←

◆サンプルコードを書くことになった経緯
冗談は置いておいて、なぜソフト苦手な私がサンプルコードを書くことになったか
というと、製作者がめんd・・・わけではなく、初心者がわかりやすく使いやすい
ように書き換える必要があったからです。
もともとzilconiaはEclipseベースの独自環境で書かれたStdPeriphを利用したもの
でした。少し前までは環境を作るのが面倒でプログラムも初心者がとっつきにくい
この環境しか選択肢がなかったのですが、今では一つインストールするだけで環境
ができるし、HALライブラリという、シンプルで使いやすいドライバがあるので、
初心者ように公開するならこっちで書き直そうということになったのです。
製作者はこのHALを使った経験がなかったので、ソフトの勉強という意味も込めて
HALでの開発経験がある自分が書くことになりました。
(ソフトが苦手なので多少のバグは許して下さい)

前置きが長くなりましたが、そんなわけでzilconiaちゃんのサンプルコードを書くに
当たって自分なりに工夫したところを紹介できれば良いなと思っています。

◆わかりやすいプログラムとは
わかりやすいコードが書きたかったらリーダブルコードを読めと言われそうですが、
ぶっちゃけコメントを書いたり、名前を考えるのって面倒くさくないですか?
1週間前の自分は他人とも言いますが、マイクロマウスのプログラムは基本的に
一人で行うと思います。なのに、他人にもわかりやすいように書く暇があるなら、
その時間を新しい機能の実装に使いたいと思いませんか?
そんな面倒くさがりな自分だからこそ守っている自分ルールがあります。

●命名規則をつける
名前を考えるのって面倒です。でもわかりづらい名前をつけて苦労するのも嫌です。
なので命名規則を決めることにしました。
例えば、関数名なら「ファイル名_動詞+〇〇」などの規則を決めて、
変数の初期化ならreset、走行に関するものならrunなど使う名前も限定します。
こうすれば特に考えなくてもそれっぽい名前ができるし、統一感が出ると思います。
同じように変数やファイル名も命名規則を決めておけば考える手間を削減できます。

●画面内に収める
ネストは3回までとか関数は100行以内とかコードを短くするルールがありますが、
行数指定でコードを短く書くのって面倒です。でも長すぎても読むのが嫌です。
なのでスクロールしなくて済むように書くことにしました。
1行見るのに横にスクロールしたり、関数1つを見るのに縦スクロールすることで、
書きづらくない程度の長さでそこそこ読みやすい短さに勝手になると思います。

●ファイルは分けるがヘッダーは一つ
cファイルを分けるときはhファイルも同時につくって、
使うところだけでそのhファイルをインクルードするのが普通だと思います。
でもファイルがたくさんあると編集したり読むのが面倒だったりします。
なのでhファイルはindex.hという一つにまとめました。
一人だけのプロジェクトなら管理できないほどのhファイルにならないと思います。
zilconiaのサンプルコードでは、index.hを宣言すればどの関数も使えるし、
説明書としてのコメントも書いたので、ここを見ればどの関数でも使えるはずです。

●余計なこと(コメント)は書かない
これは人によって賛否両論あると思いますが、私はコメントを書くのが嫌いです。
なぜならば、そもそもコメントが書くのが面倒くさいし、コメントを修正し忘れて
間違ったコメントが残って後から混乱するからです。
デバッグ時は特に何度も書き直す内に修正し忘れるなんてこと多々あると思います。
なので余計なことは書かずに、コメントを書かなくてもわかるくらいわかりやすく
コードを書くのが最良だと思っています。
(どうせコードを書いたのは自分なので後で読んでもわかるはずです?)
とは言ってもサンプルコードは最低限のコメントは書いたつもりです。

●スコープを意識しよう
面倒面倒とばかり言っていてもあれなので、それっぽいことも書こうと思います。
スコープを意識するってのはどこでも言われることですが、ここで言いたいのは
できるだけコードを小さく考えられるようにしましょうってことです。
zilconiaのサンプルコードでは、ファイル間を跨ぐグローバル変数を使わないよう
にしていたり、関係ないローカル変数が少なくなるように書いているつもりです。
管理する変数や関数が増えてくるとバグの温床となるので、
生きている変数や関数がなるだけ少なくなるように書きましょう。

ここに書いたこと以外にも色々あった気がするのですが、
イマイチ覚えていないので思い出したときに追記しようと思います。

◆最後に
プログラマーの三大美徳は、怠慢、短気、傲慢です。
面倒くさくないように書くことこそが、わかりやすくプログラムできる
最善の方法だと信じています。
なんだかんだ言ってわかりやすいプログラムはバグを減らすだけでなく、
実装しやすさや読みやすさも相まって開発効率を爆上げします。
自分なりのルールを構築して、圧倒的進捗をあげましょう。

さて、明日のMicroMouse Advent Calendar2019なぽまるさんの
「誕生日のお話」です。今日が誕生日だったんですね。おめでとうございます。
どうでも良いですが、誕生日と効いてケーキが食べたくなりました。
クリスマスというケーキが安売りイベントがあったはずなのでそれまで我慢します。

スポンサーサイト



コメントの投稿

非公開コメント

プロフィール

コヒロ

Author:コヒロ
某自動車会社の子会社に就職した新入社員。某五年制大学のサークルでマイクロマウスを製作していました。現在も製作中。パソコン、自転車、読書などなど多趣味で中途半端な人間です。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR