何の為にブログを書くのか。

学びの方法を変える

初心者エンジニアだから

成長にスピード感を感じたい。焦らず確実に知識を付けたい。

成長の過程を綴り、貯蓄する。ブログの価値を100%引き出し宝物にする。

このブログを通して、やってみようの数を増やしたい。

という想いからブログの再定義を行った。変更点は以下の通り。

何を変えるのか?

  • 技術ブログは日本語表記にする
  • 英語記事で必要な時に翻訳して綴る
  • 時々、PythonでのAI/Data-Science
  • 実際にサービスを作る工程を投稿する
  • サービス工程に関わらずその為に必要な知識も投稿する
  • サービスを構築するために必要な知識を構築過程で詰め込む

 

オブジェクト指向とは

ソフトウェア開発はコードの追加と変更を繰り返し開発が進み、ソフトウェアが使われ始めると想定外の使われ方に対応し、追加と変更の要求に応える為に変更作業が続く。オブジェクト指向はこの変更を楽で安全にする為の実践的な考え方であり工夫である。

変更が大変なプログラムの特徴

  • どこに何が書いてあるのかわからない
  • 同じ修正があちこちで必要

-> 修正に関して経験があった。使用頻度+変更の可能性があるものを一箇所でまとめて管理するように仕様を変更した。あれもオブジェクト指向の一つだったのだと腹落ちした。

  • 変更の副作用が怖くて変更できない / 思わぬ副作用が起きた

->これについての対策を週明けからするのであろうと思っている。(キャンペーン時のモーダル表示でバグが出るという事例があるので解決する。)

この問題の改善に取り組む為には?
  • データの扱い方の工夫
  • 場合分けの書き方の工夫
  • プログラムの分割の仕方の工夫
  • 名前の付け方の工夫

具体的な方法がわかったところで、もう少し詳細に詰めて行こうと思う。

関連するデータとロジックは同じクラスに書く

データとロジック(データ操作)を、1つのクラスにまとめることを重視する。

  • データを操作するロジックは、そのデータをインスタンス変数に持つクラスに一緒にする(データクラスと機能クラスに分けない)

データとロジックを別クラスに分けると、データを操作するロジックが、あちこちに重複しやすくなる

  • オブジェクトを生成するときは、必ず操作対象のデータをコンストラクタの引数として渡す

データを引数で渡すことを繰り返すと、そのデータを使った判断/加工/計算のロジックが、どこに書いてあるのか、見つけ出すのに苦労する

  • オブジェクトに、getXxxx()の形式で内部のインスタンス変数を要求しない
  • オブジェクト内部のインスタンス変数を、外から変更しない(setterメソッドを使わない)

オブジェクトのインスタンス変数を書き換える操作は(状態が変わるので)、プログラムの動作が不安定になりやすい

 

基本のデータ型を使うロジックを用途ごとのクラスにまとめる

データとロジックを同じクラスにまとめる方法としては、プログラミング言語に用意されている汎用的なデータ型を使って、用途を限定した「独自のクラス」を作ることである。基本的なデータ型とそのメソッドは、色々な用途に使えるように汎用的に設計されている。しかし、このようなデータ型と汎用的な操作をそのまま使うと、次のような問題が起きがちである。

  • 業務的に正しくないデータが混入しても動いてしまう
  • プログラムのどこを見ても同じような記述が並ぶ(基本データ型だらけ)
  • 汎用的な操作が、どのような意図なのか、判断しにくい

 

聞いたことあるけど、理解できていない語録

  • 引数

->プログラムにおいて、その外部と値をやりとりするための特別な変数、あるいはその変数の値のことである。Ex:ご飯->食べる->う○こ(*左フローの"ご飯"のこと)