LoginSignup
0
0

Google Java Style Guide問題集(全10問:初級編)

Last updated at Posted at 2023-08-30

はじめに

Google Java Style Guideを定着させるために、実際のコードでの問題集を作成しました。
特に開発で出会う頻度が高い項目に絞っています。

こちらをきっかけにぜひ↓のページを実際にご自身で参照してください。

※注記:コードはChatGPTを活用して作成しています。

参考記事

Google Java Style Guide
https://google.github.io/styleguide/javaguide.html

Google Java Style Guide(非公式和訳) - 2023年8月31日現在、本家と内容が変わらないのでおすすめです。
https://kazurof.github.io/GoogleJavaStyle-ja/

対象者

Java初級者(コーディングスタイルに不安がある人)

形式

全10問です。各問題に回答のリンクをつけています。

問題1

以下のコードをGoogle Java Style Guideに準拠して修正してください

import java.util.*;

public class StyleMistakes {

  public static void main(String[] args) {
    List<String> myList = new ArrayList<>();
    myList.add("Hello");
    myList.add("World");
    System.out.println(myList);
  }
}

回答へ(内部リンク)

問題2

以下のコードをGoogle Java Style Guideに準拠して誤りを指摘してください

public class MainClass {
  public static void main(String[] args) {
    System.out.println("This is the main class.");
  }
}

class AnotherClass {
  public void printMessage() {
    System.out.println("This is another class.");
  }
}

回答へ(内部リンク)

問題3

以下のコードをGoogle Java Style Guideに準拠して修正してください

public class ColumnLimitViolation {
    public static void main(String[] args) {
        String result = "Hello".concat(" ").concat("World").concat("!").toUpperCase().replace("HELLO", "HI").substring(0, 5);
        System.out.println(result);
    }
}

回答へ(内部リンク)

問題4

以下のコードをGoogle Java Style Guideに準拠して修正してください

public class IndentationMistake {
    public static void main(String[] args) {
        System.out.println("This is a very long line that definitely exceeds the column limit and is not indented properly"
        + "which makes it hard to read and understand.");
    }
}

回答へ(内部リンク)

問題5

以下のコードをGoogle Java Style Guideに準拠して修正してください

public class VerticalWhitespaceMistake {

    private int x;
    private int y;


    public VerticalWhitespaceMistake(int x, int y) {
        this.x = x;
        this.y = y;
    }


    public int sum() {
        return x + y;
    }


    public static void main(String[] args) {
        VerticalWhitespaceMistake obj = new VerticalWhitespaceMistake(5, 10);
        System.out.println("Hello, world!");

        System.out.println("Sum: " + obj.sum());
    }
}

回答へ(内部リンク)

問題6

以下のコードをGoogle Java Style Guideに準拠して修正してください

public class HorizontalWhitespaceMistake{
    public static void main(String[]args){
        int x=5,y=10;
        int sum=x+y;
        if(sum>10){System.out.println("Sum is greater than 10.");}
        else{System.out.println("Sum is less than or equal to 10.");}
    }
}

回答へ(内部リンク)

問題7

以下のコードをGoogle Java Style Guideに準拠して修正してください

public class VariableDeclarationTiming {
    public static void main(String[] args) {
        int x = 5;
        int y = 10;
        int sum;

        System.out.println("Doing some other tasks...");

        sum = x + y;
        
        if (sum > 10) {
            System.out.println("Sum is greater than 10.");
        } else {
            System.out.println("Sum is less than or equal to 10.");
        }
    }
}

回答へ(内部リンク)

問題8

以下のコードをGoogle Java Style Guideに準拠して修正してください

package com.Example_Company;

public class PackageNameMistake {
    public static void main(String[] args) {
        System.out.println("This is an example.");
    }
}

回答へ(内部リンク)

問題9

以下のコードをGoogle Java Style Guideに準拠して修正してください

package com.example;

public class myClass {
    public static void main(String[] args) {
        System.out.println("This is an example.");
    }
}

回答へ(内部リンク)

問題10

以下のコードをGoogle Java Style Guideに準拠して修正してください

public class ConstantNamingIssue {
    public static final String myConstant = "This is a constant";
}

回答へ(内部リンク)

問題1 回答

import java.util.ArrayList;  // 3.3.1 ワイルドカード・インポートの禁止を解消
import java.util.List;  // 同上

public class StyleMistakes {

  public static void main(String[] args) {
    List<String> myList = new ArrayList<>();  // ワイルドカードインポートを修正

該当ルール

3.3.1 ワイルドカードインポートは禁止

問題へ戻る(内部リンク)

問題2 回答

同じファイルにトップレベルのクラスを2つ作ってはいけない。
(トップレベルのクラスはファイルを分ける。)

該当ルール

3.4.1 1個だけのトップレベルクラスの宣言

問題へ戻る(内部リンク)

問題3 回答

public class ColumnLimitViolation {
    public static void main(String[] args) {
        // 修正後:メソッドチェーンを適切に改行して、列数制限を守る
        String result = "Hello"
            .concat(" ")
            .concat("World")
            .concat("!")
            .toUpperCase()
            .replace("HELLO", "HI")
            .substring(0, 5);
        
        System.out.println(result);
    }
}

該当ルール

4.4 1行の文字数制限 100文字

問題へ戻る(内部リンク)

問題4 回答

public class IndentationMistake {
    public static void main(String[] args) {
        System.out.println("This is a very long line that definitely exceeds the column limit "
                + "and is now indented properly, which makes it easier to read and understand.");
    }
}

該当ルール

4.5.2 連続する行は少なくとも4文字インデントする

問題へ戻る(内部リンク)

問題5 回答

public class VerticalWhitespaceMistake {
    // 先頭の空白行はオプションです。

    // フィールド間に空白行を入れても入れなくても構いません。
    // 論理的にフィールド同士が関係していればグループ化することも可能です。
    private int x;
    private int y;

    public VerticalWhitespaceMistake(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int sum() {
        return x + y;
    }

    public static void main(String[] args) {
        VerticalWhitespaceMistake obj = new VerticalWhitespaceMistake(5, 10);
        System.out.println("Hello, world!");
        System.out.println("Sum: " + obj.sum());
    }
}

該当ルール

4.6.1 垂直の空白

問題へ戻る(内部リンク)

問題6 回答

public class HorizontalWhitespaceMistake {
    public static void main(String[] args) {
        int x = 5, y = 10;
        int sum = x + y;
        if (sum > 10) {
            System.out.println("Sum is greater than 10.");
        } else {
            System.out.println("Sum is less than or equal to 10.");
        }
    }
}

該当ルール

4.6.2 水平の空白

問題へ戻る(内部リンク)

問題7 回答

public class VariableDeclarationTiming {
    public static void main(String[] args) {
        // 適切なタイミングで変数を宣言
        int x = 5;
        int y = 10;

        // 他の処理
        System.out.println("Doing some other tasks...");

        // sumはこのタイミングで初めて使用されるため、ここで宣言
        int sum = x + y;  // 4.8.2.2 必要なときに宣言する
        
        if (sum > 10) {
            System.out.println("Sum is greater than 10.");
        } else {
            System.out.println("Sum is less than or equal to 10.");
        }
    }
}

該当ルール

4.8.2.2 必要なときに宣言する

問題へ戻る(内部リンク)

問題8 回答

package com.examplecompany;  // 5.2.1 パッケージ名(大文字とアンダースコアが除去されている)

public class PackageNameMistake {
    public static void main(String[] args) {
        System.out.println("This is an example.");
    }
}

該当ルール

5.2.1 パッケージ名

問題へ戻る(内部リンク)

問題9 回答

package com.example;

public class MyClass {  // クラス名は大文字で始める
    public static void main(String[] args) {
        System.out.println("This is an example.");
    }
}

該当ルール

5.2.2 クラス名

問題へ戻る(内部リンク)

問題10 回答

public class ConstantNamingIssue {
    public static final String MY_CONSTANT = "This is a constant";
}

該当ルール

5.2.4 定数名

問題へ戻る(内部リンク)

最後に

誤り・ご指摘など頂けましたら嬉しいです。
必要に応じて修正対応させていただきます。

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