-
Notifications
You must be signed in to change notification settings - Fork 0
前回の反省など(takira)
t_akira edited this page May 10, 2023
·
2 revisions
- まず完成度6-8割程度のものを雑につくり、適切な構造や引数、考慮漏れの点などをピックアップ後、設計を練り直した。本実装においてアウトラインに大きな変更がなかったため、変更によるバグが発生しにくかった
- 極力exitせずにerror codeをreturn したため、問題の箇所が発見しやすかった
- まず入力を受け付けるpromptを作り、その後の処理を追加していったため、常に動かせる&updateされている感覚があり、飽きにくかった気がする
- 実装機能ごとにissueを立てたissue駆動開発により、先の課題が明確となりスケジュール感を意識したり、ゲーミフィケーション的に進められた気がする
- 機能追加ごとにleak checkをしていたため、memory leakで困らなかった
- 重要な関数(builtin, split, wildcard, etc…)は単体でテストをしたため、バグに悩まされなかった
-
&&
,;
を実装していたため、複数のコマンドを一度に入力でき、テストが楽だった
- 細かい点もbashに習い、こだわって再実装できている感覚が楽しかった
- bashの挙動が多少わかるようになった
- minishell立ち上げ時のLogoがかわいくモチベ上がった
- gitの使い方が少しはわかった
- 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を活かしきれなかった(文法を整理するためにひょろっと書いただけ)
https://github.com/ak0327/minishell_rev1
man bash
- Bash Reference Manual
- The Architecture of Open Source Applications - The Bourne-Again Shell
- AOSA (ja)
- 初期段階のため、変更が入っているかも...
- (ネタバレ注意) https://app.diagrams.net/#G1oPTBgFLAS1ed5Ug4HUcGS2M5xlDq0x29