👍

初学者向け!こんな風にするときれいに書ける!

2023/09/30に公開

はじめに

プログラミングするにおいて見やすさ、わかりやすさというのは自分にとっても見る人にとっても理解しやすく、保守性が高いものです。なのでプログラミングを少し触っている、理解してきたという人も少し意識してみましょう!

インデントを意識する

インデントというのは字下げです。
文頭は1文字下げる。みたいなやつです。
プログラミングにおいてはほとんどの場合Tabでインデントをします。(スペースの人もいますが...)

インデントあり
fn hoge(fuga: &str) {
	if fuga == "hello" {
		println!("hello!");
	}
}
インデントなし
fn hoge(fuga: &str) {
if fuga == "hello" {
println!("hello!");
}
}

インデントがない状態だとぎちぎちで見づらいうえに、変数などのスコープというものが意識しづらくバグを引き起こしやすいです。

名前をきっちりする

短すぎる名前を使わない

const s = "結果>>";

const fn = (a, b) => {
	return a ** b;
}

console.log(s + fn(2, 8));

変数名や関数名など短すぎると意味がくみ取りづらくなります。
aは何?sは何?と自分で見返していても訳が分からなくなってしまいます。

こうしよう!
const prefix = "結果>>";

const pow = (left, right) => {
	return left ** right;
}

console.log(prefix + pow(2, 8));

全角文字、ローマ字は極力避ける

全角文字、いわゆる平仮名や漢字を用いるとバグの原因になることがあります。文字のエンコードの変更に対して弱すぎるためです。
一応使える言語もありますが(C#やJava)使用しない方がよいでしょう。

public static int 仮変数 = 10;
public static void 関数1() {
	// ... //
}
エンコードが変わるとこうなっちゃう...
public static int 莉ョ螟画焚 = 10;
public static void 髢「謨ー・() {
	// 不正な文字でエラーになる //
}

ローマ字を用いると可読性が下がりがちです。
やむを得ない場合以外は頑張って英語を使う方が無難です。

const debaggu: boolean = true;
const kariOkiMoji: string = "KARI";
const kekka = 5 + 10;

if (debaggu) console.log(kariOkiMoji);
こうしよう!
const isDebug: boolean = true;
const placeHolderText: string = "KARI";
const result = 5 + 10;

if (isDebug) console.log(placeHolderText);

ある程度のパターンを覚える

英語なんかつかえるかい!という人でもある程度命名パターンを覚えておくだけでも違います。
何個か例を出しておきます!よければ覚えてね。

日本語 英語 使用例
~であるか is~ isEnabled
~可能か can~ canDrag
~できるか allow~ allowConnect
~の時 on~ onClick
~として as~ asItem
~に to~ toString
~から from~ fromString
~と一緒に with~ withOption
~を取得する get~ getString
~を設定する set~ setAudio
~を持っているか has~ hasEffect

このようなパターンを覚えておけばgetAsStringみたいな合わせ技もできます。

命名規則を見てみる

偉そうにこう命名しようとは言いましたが名前のつけ方は言語によって違ったりします。
そこで各プログラミング言語の命名規則、変数名や関数名の名前の付け方のルールを守ることで一貫性を持たせて見やすく、保守性を高くできます。
C#はマイクロソフトが直接、コーディング規則(命名だけでなく、もっと様々な記法のルール)を用意していたり[1]します。

その中で基本的なものとして名前の表記方法(言い方があってるか知らない...)を軽く紹介しておきます。

パスカルケース(アッパーキャメルケース)

PascalCase.cs
public class ThisIsClass {
	public static void ThisIsAMethod(HogeClass class) {
		// ... //
	}
}

パスカルケース(アッパーキャメルケース)は大文字で始まり、単語区切りで大文字にする表記方法です。
C#のクラス名、関数名などに使用されています。

キャメルケース

camelCase.js
const thisIsConstant = "hogehoge";

const thisIsFunction = () => {
	// ... //
}

キャメルケースは小文字で始まり、単語区切りで大文字にする表記方法です。
JavaScriptの変数名などに使用されています。

スネークケース

snake_case.py
this_is_variable = "hogehoge"

def this_is_function(hoge: str):
	# ... #

スネークケースは単語をアンダーバー(_)で区切る表記方法です。
Pythonの変数、関数名などでよく使用されています。

めっちゃ細かいところ

コメントを使う

コメントを適度に、補助として書くと可読性が増します。

impl ColorRGB {
	// R, G, Bの値(0-255)で生成
	pub fn from_rgb(r: u8, g: u8 b: u8) -> Self {
		// ... //
	}

	// 16進数の値(0x000000 - 0xffffff)で生成
	pub fn from_hex(hex: u32) -> Self {
		// ... //
	}

	// Linearに変換
	pub fn linear(&self) -> ColorRGB {
		// ... //
	}

	// CIE XYZに変換
	pub fn xyz(&self) -> ColorXYZ {
		// ... //
	}
}

演算子などの記号の前や後のスペース

演算子の前後にスペース、引数の区切りなど、カンマの後ろにスペースを入れてあげるだけでかなり見やすくなります。

こうじゃなくて
int main(){
	int sum=10+1;
	double pow=std::pow(2,8);
	
	printf("%d, %lf",sum,pow);
	
	return 1;
}
こう!
int main(){
	int sum = 10 + 1;
	double pow = std::pow(2, 8);
	
	printf("%d, %lf", sum, pow);
	
	return 1;
}

適度な改行

役割ごとに改行を挟んであげると見やすいうえに流れを追いやすくなります。

func main() {
	// 変数定義
	num1 := 10
	num2 := 50
	sum := num1 + num2
	
	// 条件判断
	over_twenty := false
	if sum > 20 {
		over_twenty = true
	}
	
	// 出力
	fmt.Println("%t", over_twenty)
}

さいごに

最初はめんどくさいかもしれませんが後で後悔しないように、正しく規則を用い、楽しくプログラミングしましょう!

脚注
  1. NET ドキュメントの C# のコーディング規則 ↩︎

Discussion