0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

明日から使える「リーダブルコード」テクニック3選

Last updated at Posted at 2023-11-13

本記事は「リーダブルコードってなに?」「よく名前を聞くけど、どんな本なの?」という方のための記事です

はじめに

こんにちは、株式会社Kakukakuの駆け出しエンジニアsatoです。
今回は、「リーダブルコード」という本についてご紹介します。あまりにこの「リーダブルコード」という本を先輩エンジニアの方からお勧めされまして、気になりすぎて夜も眠れなかったので、実際に読んでみて明日からすぐに使えるテクニックについて記事にしました。

「リーダブルコード」ってなに?

「リーダブルコード」

リーダブルコードという著書をご存知でしょうか?
「良いコード」「悪いコード」という表現については、人間目線か、機械目線かによって違うと思いますが、「リーダブルコード」は「人間が読めるコード」に主題を置いた本です。「人間が読めるコード」、あるいは「人間が読みやすいコード」を目指す。その考え方、実際の手法について書かれていて、以下のような4つの部に分かれていました。

第一部:表面上の改善:変数、関数の命名法
第二部:ループとロジックの単純化:分岐、繰り返しの簡略化
第三部:コードの再構成:大きく複雑なロジックの整理方法
第四部:選抜テーマ:具体例2題について

簡単なものから始まり、複雑なロジックに立ち向かっていくという構成になっていてました。今回はその中から明日からすぐ使えるテクニックについて3つ紹介します。

1:変数には自分に名乗らせる!

「第一部:表面上の改善」で紹介されていたテクニックになります。
人が目にした時点でどういう処理に使われ、どういう値を扱うのかを想像できるような命名にする。
例えば、時間やバイト数など計測できるものであれば下記のように単位をつけて、代入される値が想像できるような命名をする。

     
改善前改善例
int start int start_ms
int size int size_mb

他には下記のように状況を付与して役割を明確にする。

   
改善前 状況改善例
data dataは整形されていないもの data_plaintext
html htmlの文字コードをUTF-8に変換したもの html_utf8

といった簡単なテクニックです。
他にも勘違いされないように、
限界値は min,maxを使う。範囲は first,lastを使う。
などの具体例も多々紹介されていたので、命名で悩んでしまう方はリーダブルコードを一読していただけると一助になるかもしれません。

2:説明変数をうまく活用する

上記の命名方法で読みやすくする手法以外にも、変数の使い方でさらに読みやすくできるテクニックが紹介されていました。
以下紹介されていた改善の余地のあるPythonのコードと、改善例です。
(こちら索引記載すれば商用利用以外フリーと記載ありました、ありがとうございます🙇)


改善前
    if line.split(':')[0].strip() == "root":

if文の中に条件と処理をそのまま書いてあります。
コーディング中は楽なのでやりがちですが、


改善例
    username = line.split(':')[0].strip()
    if username == "root":

 
上記のように処理を変数化して追い出して、「username」という変数にする。この追い出す手法のことをリーダブルコードでは説明変数と呼んでいました。これによって「ユーザーの名前に関係のある値なのだな」と推測を立てながら読み進められると思います。これも明日から使える!

3:コメントの改善

最後にもう1つ。
「リーダブル」なコメントの仕方についても例があったのでご紹介。
なんとコメントまでも改善の余地があるとのこと。
以下はC++でマップを定義するコードとそのコメントです。


改善前
        //intはCategoryType。
        //pairの最初のfloatは'score'
        //2つ目は’weight’。
        typedef hash_map<int,pair<float,float>> ScoreMap;

詳細に書かれていて悪くないコメントだと思うのですが、


改善例
        //CategoryType -> (score,weight)
        typedef hash_map<int,pair<float,float>> ScoreMap;
        

上記のように具体的に扱う値を代入処理とともにコメントすれば、行数も、理解にかかる時間も少なく読めるようになり、より「リーダブル」になるという手法の紹介でした。

最後に

目指せ「リーダブルコード」マスター!

最後まで読んでいただきありがとうございました。
自分の中でぼんやりとしていた命名規則の方針や、コメントの仕方を
思考の過程と共に明確に言語化してくれていてためになった一冊でした!
ここでの紹介はごく一部なので、気になった方は上記のリンクから実際に手に取ってみて読んでいただきたいと思っております。

また私達、株式会社Kakukakuでは一緒に開発を行ってくれるスタッフ、パートナーを募集しております。
「リーダブル」な取り組みをしたい、「リーダブル」になりたい方をお待ちしております!
https://kakukaku.app/

参考文献

「リーダブルコード」https://www.oreilly.co.jp/books/9784873115658/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?