【新卒】コードの基礎:書き方編
新卒に伝えたいシリーズ第三回は、コードの基礎:書き方編です。
このコードの基礎はマジでコードの基礎となるので、ちょっとでも実装知っている人は「ふざけるな」と思えるほど当たり前なことを書こうと思います。
なお、オブジェクト指向については、基礎を話すうえで少しだけ用いています。オブジェクト指向の解説はまた別途やろうと思います。
用語
この記事で記載する用語一覧を記載します。
- クラス
- 目的に合わせて必要なもの(メソッドやデータ)をまとめたもの
- メソッド(関数)
- 特定の処理をまとめたもの
- 引数
- 行動に必要な情報を与えるための設定
- 戻り値
- 行動の結果
- データ型(型)
- そのデータの意味。値(ブール値、数値、文字、文字列、モノなど)の名前などを書く
- 変数
- クラスやメソッドに定義するデータが変動する値
- 定数
- 主にクラスに定義するデータが変動しない値
- 配列
- 宣言された型の値を複数個保持する変数or定数
クラスとメソッド
外枠から話していこうと思いますのでまずはここから
クラス
クラスとは「目的に合わせて必要なもの(メソッドやデータ)をまとめたもの」です。
※ メソッドは後述します。
クラスは、よく「名詞」を使って表されます。
ヒトやモノの名前として考えるとわかりやすくなると思います。
例えば
目的を「Youtubeを見る」とした場合、人として考えると「Youtubueを見る人」なので
クラスの名前は「YoutubeWatcher」みたいな感じになります。
Youtubeを見るという目的に対して、必要な事柄を集めることになります。
メソッドとしては「動画を検索する」「動画を見る」、データとしては「登録チャンネル一覧」
といった感じですね。
クラスの記述方法を具体的に記載すると
class YoutubeWatcher{
// Toutubeを見るための処理や情報を書く場所
}
といった形です。
- class ⇒ 【クラスであることの宣言】
-
開発言語により変わりますが、classという文字は固定です。
- YoutubeWatcher ⇒ 【クラス名】
となるため、
【クラスであることの宣言】 【クラス名】{
// Toutubeを見るための処理や情報を書く場所
}
となるわけです。
よくあるクラス名
上記の例をもとに考えると、よくあるクラス名が「なんとなくそういえば名詞だな」みたいに思えるかと。。。
- ヒト系のクラス名の例
- Writer ⇒ 書き込む人
- Reader ⇒ 読み込む人
- Analyzer ⇒ データなどの「分析者」
- Parser ⇒ 構文などの「解析者」
- モノ系のクラス名の例
- File ⇒ ファイル
- Stream ⇒ ストリーム(日本語だと流れとかですが、、)
メソッド
メソッド(日本語では「関数」とも言います)とは「特定の処理をまとめたもの」です。
メソッドは、よく「動詞」を使って表されます。
ヒトやモノが行う「行動」や「作業」と考えるとわかりやすくなると思います。
メソッドには、その「行動に必要な情報を与えるための設定」として「引数」があり、
「行動の結果」として「戻り値」が存在します。
例えば
前述していますが、「Youtubueを見る人」が行う行動として考えると、
メソッドとしては「動画を検索する」「動画を見る」「動画を気に入る」「チャンネルを登録する」などになります。
そう、クラスの中にメソッドは複数存在します。
そして、「Youtubeを見る人」の中で「動画を検索する」「動画を見る」「チャンネルを登録する」は表立った行動ですが、「動画を気に入る」は心の中での行動になります。
- 表立った行動が「public(公開)メソッド」
- 心の中での行動が 「private(非公開)メソッド」
となります。
次に、「動画を検索する」という行動に必要な情報を考えると、検索するためのキーワードがあると思います。
また、「動画を見る」
「動画を気に入る」ためには、動画情報が必要になると思います。
これら、行動に必要な情報を与えるものが「引数」です
最後に、「動画を見る」を行った場合、その動画が高評価であったか低評価であったかがわかると思います。
この「動画を見る」という行動に伴う結果(判断されるorわかること)が「戻り値」です。
もちろん、全ての行動に対して何かが判断されるorわかるわけではないので、戻り値が必須なわけではありません。
これらを踏まえ、メソッドの記述方法を具体的に記載すると
class YoutubeWatcher{
// Toutubeを見るための処理や情報を書く場所
public void SearchMovie(String keyword) {
// 動画検索処理
}
public Boolean WatchMovie(Object movie) {
// 動画閲覧処理
return hyoka;
}
private void SetFavoriteMovie(Object movie) {
// 動画お気に入り処理
}
}
といった形です。
- public or private ⇒ 【公開or非公開宣言】
- void or Booleanなど ⇒ 【戻り値の型】
- voidは「中身がない」という意味で戻り値がないことを表します
- SearchMovieなど ⇒ 【メソッド名】
- (String keyword)など ⇒ 【引数の型と引数】
- return hyoka ⇒ 【戻り値】
- 戻り値の型がvoidの場合は記載しなくてもよいです。
となるため、メソッドだけを記載すると
【公開or非公開宣言】 【戻り値の型】 【メソッド名】(【引数の型】 【引数】) {
// メソッドの処理
【戻り値】
}
となります。
変数と定数
クラスや、メソッドに定義する値の格納先である変数・定数について記述します。
変数
変数とは、「クラスやメソッドに定義するデータが変動する値」のことを指します。
変数名はそのプロジェクトや開発者、開発言語によってさまざまな記述方法があるため、それに従って記載しましょう。
定数
定数とは、「主にクラスに定義するデータが変動しない値」のことを指します。
定数名はよくすべて大文字で書かれます。
また、「const」や「final」という修飾子を使って、読み込み専用として、宣言します。
宣言について
変数や定数は、モノや行動に対する永続、もしくは、一時的な値なので、これといった表現はなく、「わかりやすく!」ということをよく言われます。
プロジェクトによってはデータ型(intやstring)を変数名に入れるようなところもあります。
また、定数については基本的に「定数だよ!」
というだけで、実装上完璧に値を変動させないことはできません。実装するときに気を付けて実装する必要があります。
変数や定数を記載するときは、まず宣言をします。
「こういう値をこういう名前で用意しますよ!」 という感じの宣言です。
そのあとは、その変数or定数を目的に沿って使っていけばよいわけです。
例えば
「Youtubueを見る人」クラスが持つ変数としては「登録チャンネル一覧」「後で見る動画一覧」などが考えられます。また、定数としては、「登録チャンネル最大数」
「後で見る動画最大数」などが考えられます。
「動画を検索する」メソッドが持つ変数としては「検索結果一覧」などが考えられます。
これらを踏まえ、変数・定数の記述方法を具体的に記載すると
class YoutubeWatcher{
const int REGISTED_MAX_SIZE = 100; // 登録チャンネルの最大定数
Object registeredChannel[REGISTED_MAX_SIZE]; // 登録チャンネル一覧
public void SearchMovie(String keyword) {
Object resultMovie[10]; // 検索結果
resultMovie = Youtube.Search(keyword);
}
}
といった形です。
基本の形としては以下のようになり、最初に変数or定数の型を書き、その隣に名前を書きます。
【変数or定数の型】 【変数or定数名】;
「int
REGISTED_MAX_SIZE」と書いてある場合、int(数値)型で「REGISTED_MAX_SIZE」という名前の定数が宣言されているということになります。
また、以下のように宣言時にデータを入れておくこともできますし、配列の場合はその配列の長さを宣言することができます。
【変数or定数の型】 【
変数or
定数名】 = 【
変数or
定数の値】; 【変数
or定数
の型】 【変数
or定数
名】[【配列の長さ】];
まとめ
いかがだったでしょうか。
まずは、クラス、メソッド、変数を「どう書くか」について記載しました。
次は、書いたクラス、メソッド、変数を「どう使うか」
について書こうと思います。
コメント
コメントを投稿