#はじめに
アプリのコードレビューを初めて受けて何点か指摘があったので次からは気を付けて行きたいといった意味を込めて指摘を受けた部分をまとめていく。
なお、指摘を受けた内容はフリマアプリの制作段階でのことである。
##REDMEでのコードレビュー
・deviseを使用したのだがencrypted_passwordというカラムを記述するのを忘れていた。
・メールアドレスは一意性という条件が設けられているにも関わらず一意性制約の記述がなかったこと。
・見本アプリではユーザーの登録時、姓、名、姓(フリガナ)、名(フリガナ)と入力欄が細かく分かれているのに姓名を一緒にしてしまっていたこと。
・誕生日カラムをdate型で年、月、日と一つにするのではなく、単に数字だからという考えでinteger型にしていたこと。
・imageの実装はactive storageを使うためREDMEに記述する必要がないにも関わらず記述していたこと。
・郵便番号はハイフンも含めるためinteger型にする必要があるのにstring型にしていたこと。
・active hashを使用時データはidで保存されるため、integer型にしなければならないのに、string型にしていたこと。
・電話番号は数字の文字列で保存するためstring型にしなければならないこと。
##新規登録・ログイン機能でのコードレビュー
・バリデーションをwith_optionsでまとめていなかったこと。可読性を上げるためにもまとめた方が良い。
・passwordでの文字数制限のバリデーションはdeviseでデフォルト設定になっているにも関わらずmaximumで設定しようとしていたこと。
・パスをprefixで記述していなかったこと。可読性を上げるためにもprefixで記述した方が良い。
・不要なコメントアウトの消し忘れ。可読性を上げるため。
##商品を出品する機能でのコードレビュー
・before_action :authenticate_user!で制限を設ける際、application_controller.rb内に記述してしまっていたこと。
・with_optionsをネストせずに分けて記述していたこと。
・300円以下は登録できないというテストコードを実装する際、境界値の299で実装した方が良いのに200で実装していたこと。
##商品の購入機能でのコードレビュー
・ @item = Item.find(params[:id])はdestroy,edit,update,showで共通なため、before_actionでまとめた方が可読性が上がるにも関わらずまとめていなかったこと。
・resources :items, only: [:index, :new, :create, :show, :edit, :update, :destroy]と全てのアクションが記述されているのに resources :itemとまとめて記述していなかったこと。
・フォームオブジェクトの中に、:user_idと:item_idを記述していなかったこと。ユーザーのIDと商品のIDが無い場合、確実に購入できないようにするために必要。
・任意である、建物名の「建物名が空でも購入できること」のテストコードを実装していなかったこと。建物名は任意入力となっているため建物名を記入せずに購入するユーザーが居る可能性を想定したテストコードを実施する。
##最後に
改めてこのようにまとめてみると、初歩的なミスが多かったなと思った。同じミスせず効率よくコードを描けるように頑張って行きたい。