Skip to content

前回の反省など(takira)

t_akira edited this page May 10, 2023 · 2 revisions

Good

設計・実装

  • まず完成度6-8割程度のものを雑につくり、適切な構造や引数、考慮漏れの点などをピックアップ後、設計を練り直した。本実装においてアウトラインに大きな変更がなかったため、変更によるバグが発生しにくかった
  • 極力exitせずにerror codeをreturn したため、問題の箇所が発見しやすかった
  • まず入力を受け付けるpromptを作り、その後の処理を追加していったため、常に動かせる&updateされている感覚があり、飽きにくかった気がする

進捗管理

  • 実装機能ごとにissueを立てたissue駆動開発により、先の課題が明確となりスケジュール感を意識したり、ゲーミフィケーション的に進められた気がする

テスト

  • 機能追加ごとにleak checkをしていたため、memory leakで困らなかった
  • 重要な関数(builtin, split, wildcard, etc…)は単体でテストをしたため、バグに悩まされなかった
  • && , ; を実装していたため、複数のコマンドを一度に入力でき、テストが楽だった

モチベ

  • 細かい点もbashに習い、こだわって再実装できている感覚が楽しかった
  • bashの挙動が多少わかるようになった
  • minishell立ち上げ時のLogoがかわいくモチベ上がった
  • gitの使い方が少しはわかった

Bad

  • Normを後回ししたため、提出前に雑に関数分割して可読性が大きく低下した
  • 全体のテストはスクリプトで回すべきだった(builtinやsplit, wildcardなどは機能ごとにテストを実施していたが、parsingの結果やコマンドの実行結果などは、minishellを立ち上げて手入力だったため、大変だった)
  • 完成度8割の段階でbonusのwildcardに取り掛かり、初めて全容を把握したため、expansionなどに変更が生じて辛かった。実装する機能の仕様は先に把握しておくべきだった。
  • GitHubはbranch, issue程度しか使っておらず、pull requestなどを活用できなかった

追加したい機能や修正したいバグ

  • 構文木を使って実装してみたい(構文木を諦めて線形リストで実装した...)
  • \ 余裕があれば追加したいかも(実装・テストともにエグくなりそうなので、余裕があれば…)
  • echo hello | ./minishell がバグっていたため注意したい :(
  • expansionが甘い条件があった export a="hello world"; export b=$a など
  • エラーメッセージ周りをbashに合わせきれなかった
  • cd - , cd ~ , cd //
  • BNFを活かしきれなかった(文法を整理するためにひょろっと書いただけ)

Repo

https://github.com/ak0327/minishell_rev1


Reference


Diagram