学習のアウトプット(書きやすいコードについて・コマンドの仕組みと管理ツールについて)
コマンドの仕組みと管理ツールの項目は少し理解に時間がかかった。
【リファクタリングを行う理由】
・個人やチームの可読性を向上させる
・保守を行いやすくする
・柔軟な開発体制が構築できる
これまでのカリキュラムでは意識していなかったが、
今後は他の人に見てもらう前提で分かりやすいコードを書くように努める。
【リファクタリングの具体例】
・ネストの中にネストがあるような記入(ifの中にifがあるなど)
→論理演算子を用いてなるべく1つにまとめる、早いタイミングで戻り値を返す
・流れがわかりづらい→コメントを入れて分かりやすくする
(コメントは1行で簡潔に書き、コメントの補足コメントなどは用いない)
・1つの条件式が長い→いくつかのifに分ける、あらかじめ条件式を関数化しておく
・関数名は一見して何を示しているのかいるのか分かる名称にする
(名詞+動詞の順で命名する)
・真偽を問う関数は関数名の終わりに?をつける
上記以外にも、(絶対的な正解はないが)考え方によって様々なリファクタリングがある。
------------------------------------------------------------------------------------
【シェル】
ターミナルとOSの間に入るもの。
ターミナルに入力したコマンドをOSに指示し、OSの動作をターミナル上で返す役割がある。
------------------------------------------------------------------------------------
【PATH】
環境変数と呼ばれるOS用の変数のこと。
この中には様々なディレクトリへの絶対パスが記載されており、PATHに絶対パスの定義をすることを「PATHを通す」という。
シェルは、コマンドから指示があった際にこのPATHからアプリケーションのディレクトリを参照する。
------------------------------------------------------------------------------------
【コマンドラインツール】
コマンド指示を受けてOSが動かすアプリのうち、初期からOSに入っておらず使用頻度の高いものをまとめたパックのようなツール。
macではCommand Line Toolsがあり、インストールすることでLinux以外のコマンド指示を行いOS・アプリケーションを動作させることができるようになる。
(インストールしなくてもLinuxコマンドに対応している動作は使用可能)
------------------------------------------------------------------------------------
【依存関係】
あるファイルやライブラリが正常に動作するためには、他のファイルやライブラリも併せて必要であるという状態のこと。
他のファイルやライブラリのバージョンなどが変わることで動作に支障が出る「依存関係の問題」が生じることがある。
防止のためには、片方のバージョンを上げ過ぎないようにしたり、お互いのバージョンを共に更新していくなどの対応を行う。
しかし、これを人が管理していくのは負荷が高いので、パッケージ管理を使って便利に管理している。
------------------------------------------------------------------------------------
【パッケージ管理】
依存関係にあるそれぞれのファイルやプログラムをまとめてインストールし、処理や管理を行っていくこと。
例)
GemFileとbundler→Ruby on Railsのパッケージ
Homebrew→macOSのパッケージ
Yarn→Node.jsのパッケージ
(Node.jsはJavaScriptをサーバーサイドで動かすためのツール)
------------------------------------------------------------------------------------
【バージョン管理】
Gitのリポジトリのように、バージョンを段階ごとに記録して、必要に応じてバージョン変更などを行う管理方法のこと。
例)
rbenv(アールベンブ)→Rubyのバージョンを切り替えるためのバージョン管理ツール
rbenvがあれば、使用するディレクトリごとにRubyのバージョンを切り替えたりすることも可能。
逆に無ければ、PC内でRubyのバージョンが共通となるので、依存関係の問題が生じることがある。