コーディングの仕方
コーディング規則
プログラミングする上で,理解しやすい,わかりやすいコードを書くことが求められます.その他にも変数の命名規則(名前の付け方)などの指定があります.
これはわかりやすくするだけでなく,予約語(言語にもともと用意されているもの)と被ったりしないようにする意味もあります.
参考: Javaコーディング規約 | Future Enterprise Coding Standards
ブロック構造
Javaでは {}
や()
といった括弧を用いてブロックに分ける構造になっています.
これはC言語なども同様です.作法は様々あります.
class Sahou {
public static void main(String[] args){
// Javaではこのように書かれることが多いです
}
public static void sub()
{
// C言語だとこういう作法があります.
}
}
また,字下げ(インデント)も様々あります.上記では1TAB = 半角空白4文字ですが,コレが2文字だったりする場合があります.
コメントアウト
コメントアウトは出来るだけ積極的に書くべきです.
/*
複数行の
コメントアウトは
こんなかんじ
*/
// 一行ならこんな感じ
書き方は
-
本人があとから読み返して明確に理解できること
-
他者がコードを読んで,どのような構造になっているか理解できること
が大切です.
特に,バグ(issue)修正や機能更新など,あとでコーディングに修正を掛ける際の手助けにもなります.例えば,機能拡張を視野に入れてコーディングする際に該当箇所にTODOをコメントアウトすることなどがあります.
/* 時間割を通知するメソッド
* TODO:
* - 機能改善: 時間割の詳細も送信できるようにする
* - 既知のバグ: 通知サーバーに送れなかったときに再試行されない
*/
void sendTTNotify(TimeTable jikanwari){
例として,下記は私が授業で書いたものです.
/*
人工知能プログラミング: TRANSLATION - 統計型翻訳
@author J17273 中川 佑人
書式:
$ java translation > Anser.csv 2> Table.csv
$ column -ts, Anser.csv #questionから想定される訳
$ column -ts, Table.csv #確率表の表示
*/
import java.util.*;
public class translation{
public static void main(String[] args){
String[][] w = new String[2][5];
// 学習用対訳集
w[0][0] = "This is a pen";
w[1][0] = "これ/は/ペン/です";
w[0][1] = "I have a pen";
w[1][1] = "私/は/ペン/を/持っている";
w[0][2] = "The apple is ripe";
w[1][2] = "この/リンゴ/は/熟れている";
w[0][3] = "I eat an apple";
w[1][3] = "私/は/リンゴ/を/食べる";
w[0][4] = "I have a pineapple";
w[1][4] = "私/は/パイナップル/を/持っている";
//問題用英文
String question = "I have an apple";
// 1. 英語: 全単語リストとユニークな単語リストの作成
List<String> EN_ALL_WORDs = new ArrayList<>();
List<String> EN_LS_UNIQ = new ArrayList<>();
for (String en_line : w[0]) { //対訳集英語行を取得。
String[] en_words = en_line.split(" "); //単語に切り分ける。
for(String en_word : en_words){ //切り分けた単語をFORする。
EN_ALL_WORDs.add(en_word); //条件なく全単語を追加する。
boolean chk = true; //ユニーク単語リストを探索し同じものがあった場合、偽を返す。真の場合、追加する。
for(String chkuniq : EN_LS_UNIQ) if(chkuniq.equals(en_word)) chk = false;
if(chk) EN_LS_UNIQ.add(en_word);
}
EN_ALL_WORDs.add("!SEP!");
}
//2. 英語: 全単語リストとユニークな単語リストの作成
List<String> JP_ALL_WORDs = new ArrayList<>();
List<String> JP_LS_UNIQ = new ArrayList<>();
for (String jp_line : w[1]) { //対訳集日本語行を取得。
String[] jp_words = jp_line.split("/"); //単語に切り分ける。日本語はスラッシュで分ける。
for(String jp_word : jp_words ){ //切り分けた単語をFORする。
JP_ALL_WORDs.add(jp_word); //条件なく全単語を追加する。
boolean chk = true; //ユニーク単語リストを探索し同じものがあった場合、偽を返す。真の場合、追加する。
for(String chkuniq : JP_LS_UNIQ) if(chkuniq.equals(jp_word)) chk = false;
if(chk) JP_LS_UNIQ.add(jp_word);
}
どこでどのような処理を行っているかわかるようにしてください.
snippet(スニペット)
スニペットとは「切れ端」という意味です.
本格的にプログラミングを開始する際に,最初から最後まで毎回コーディングするのは大変な労力がかかります.
そこで,よく使う短いコードを保存し再利用することが行われます.
これらをコードスニペットといいます.
入門の際は,ひたすらコーディングする練習になるのでスニペットは不要です.
慣れてきたら自身のスニペットを作ってみると良いでしょう.
最終更新日: 2021年4月30日