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?

Java,kotlinの実装で共通で使えるモノ、考え方

0
Last updated at Posted at 2024-01-19

目次

Java,kotlinの実装で共通で使えるモノ

↓実装の際に参考にさせて頂いたサイト

「Java8」LocalDateTimeクラスのtruncatedToメソッドで時間を切り捨てるサンプル
https://arkgame.com/2020/11/05/post-160269/

その他参考サイト

Java8の日時APIはとりあえずこれだけ覚えとけ
https://qiita.com/tag1216/items/91a471b33f383981bfaa

オブジェクト指向言語

Java,kotlin

クラスの継承

  • 変数の定義を、親クラスの型でしておけば、子クラスの型のデータをそこに入れることが可能
    子クラスの型で定義した変数に、親クラスの型のデータを入れることは出来ない(子には定義されているが、親には定義されていない情報があるため)

コードの対応漏れを防ぐ方法

リファクタリングとかで消す予定のクラスやメソッドはTODOコメントで後から消すことを書いておくよりも、@Deprecatedアノテーションを付けておいた方が、対応漏れが防げそう

参考サイト

変数名

変数名の付け方で困ったこと

😥困りポイント

「Aを含めるか?含めないか?」という意図のフラグがある。
しかし、"含める/含めない"のどっちに"true/false"が対応するかが分かりにくい・・・

詳細

もし、フラグの意図が 「有効か?無効か?」 であれば、"有効=true"、"無効=false"と連想しやすそう。
(例:Bの条件が有効か無効かを示すフラグ)
しかし、 「含めるか?含めないか?」 だと"含める/含めない"が"true/false"のどちらに対応するのかが分かりずらい・・・
以下の2パターンが考えられてしまう。

  • 含めることに重きを置いて、"含める=true"、"含めない=false"
  • 含めないことに重きを置いて、"含めない=true"、"含める=false"

対策

  • 単純に「フラグを貰う」と割り切って、「Aを含める許可をするフラグ」を取得する と考える
  • もし、必ずしもtrue/falseのBoolen型で扱う必要が無いのであれば、enum(列挙型)クラスで状態を定義するようにした方がいいかも
enum(列挙型)クラスで状態を定義するイメージ

Java Doでしょう 31増田 亨さんと設計の実践的な考え方を学ぼう!に参加した時のメモ書き(覚書)より

アプリケーション記述
アプリケーションに特化したデータ型を独自に作ってそれをつかうようにする
例:金額計算を
  ✖Int(プリミティブなデータ型)とかを使って金額を計算する
  ◎mony型というアプリ独自の型を作ってアプリ内で必ずそれを使うようにする
例:通信成功失敗の結果を
  ✖BooleanでTrue、Falseのフラグで返す
  ◎SendResult型を作って、SUCCESS、FAILUREを返す

class Main {
    fun main() {
        var a: StateEnum = getStateOfAUseCase() // getStateOfAUseCase()で、StateEnum.INCLUDEかStateEnum.NOT_INCLUDEが返るイメージ
        println(a) // INCLUDEか、NOT_INCLUDEが表示される
        
    }

    /**
     * 状態の定義.
     */
    private enum class StateEnum { // ★enum(列挙型)クラスで状態を定義
        // 含む
        INCLUDE,

        // 含まない
        NOT_INCLUDE,
    }
}

ポイント

説明が濃いフラグ(説明をしっかり読まないとわからないフラグ)をtrue/falseの文脈で判断させるのは、認知負荷を上げてしまうのため避けた方がいい

やっちまった事→教訓

  • grep検索をして、削除などの対応が漏れている箇所が無いかを確認する
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?