Giter VIP home page Giter VIP logo

example-bbs's Introduction

example-bbs's People

Contributors

mkchm8 avatar

Watchers

 avatar

example-bbs's Issues

ログイン機能の実装

  • User.phpを移動する
  • Modelsディレクトリを削除してmakeコマンドをカスタマイズする

ドメインエンティティ実装方針の見直し

  • ドメインオブジェクトのSetterを廃止してコンストラクタでのみ値をセットできるようにする
  • ドメインオブジェクトがテーブルと1:1になっていることを強要する作りになっていて、そこから既にまずいので何とかする
    ※ Eloquentからドメインオブジェクトに変換するための共通処理を作るのがそもそも間違いな気もする

値オブジェクトは誤解が広まっているようなので、必要になるまで導入を保留とする。
ドメインエンティティの全てのプリミティブなプロパティをオブジェクトでラップする、というのは間違いらしい。
※「配送先住所」として郵便番号、都道府県コード、市区町村コード、それ以降の住所、氏名を1つの値オブジェクトで管理するのは良いかもしれない。
参考

以下、抜粋

  • 一番多い勘違いが「Valueを包んだObjectである」という物である。Value ObjectはValueのように振る舞うObjectであって、ValueにObjectのような振る舞いを足す事ではない
  • Value Objectの出発点はそもそもcompound(合成物)であって単一の値を包めとは一言も言ってない
  • クラスを定義する際に固有の振る舞いを定義するのはOOPの基本でありValue Objectに固有のアイデアではないし、Value Objectを表すクラスに常に便利なメソッドを足せとはマーチン・ファウラーも言っていない
  • 観測した中で一番ひどかったのがこの勘違いである。「ドメインの語彙に数学上の概念である整数などは存在しないのですべての語彙を専用のクラスで包め」という行き過ぎた**である。それはエンティティの全メンバーやデータベースの全列のために「顧客郵便番号」「送付先郵便番号」「事業所郵便番号」「契約日」などのクラス(メンバではなくクラス!)を定義して、immutableな振る舞いを強制する事を以てValue Objectであると言い張り、ドメイン知識の断片をそれぞれのクラスに書き散らして「高凝集になった」「型システムが守ってくれる」と喜ぶ奇行に走る。
  • 「仕方なくObjectになってしまった値の振る舞いからくる問題」を解決するための手段を「初めからObjectではなかったしする必要もなかった物」に対してわざわざ適用しているという見方もできる。

scopeFilterの廃止

廃止したい理由

  • 使わなくても実装できる
  • PHPStanにはCall to an undefined methodと怒られる
  • コードジャンプできないので追いにくい

Github Actionsの導入

やること

  • pushされたタイミングで各種チェックが走るようにする
    • PHPStan
    • PHPCS
    • PhpUnit

公開されている(承認済み)投稿にコメントできる機能の実装

仕様

  • 投稿に対するコメントは最大30 10件まで
  • 30 10件を超えてコメントしようとした場合、エラーメッセージを表示
  • 30 10件に到達している場合
    • コメント作成画面へのリンクを表示しない
    • URL直打ちでコメント作成画面を開いた場合、これ以上投稿できないことをメッセージ表示してフォームはdisabledにする

PHPStanのレベルを上げる

This Issue resolves #35

やること

  • レベルをいくつにするか決める
  • そのレベルでチェックを実施して指摘事項の対応をする

Github Actionsの設定改善

やること

  • 以下のChatGPT4によるレビュー指摘事項を反映する

この設定ファイルは適切に構成されており、PHPUnit、PHPStan、およびPHPCSを実行するために適切な手順が含まれています。ただし、いくつかの改善点があります。

  1. apt-get updateの手順は、一般的に必要ではありません。必要なパッケージがある場合は、明示的にインストールすることをお勧めします。

  2. ディレクトリ権限の設定でchmod -R 777 storage bootstrap/cacheを使用するのはセキュリティ上のリスクがあります。適切な権限設定を検討してください(例:chmod -R 775)。

  3. sleep 60でMySQLの起動を待つのは、効率的ではありません。代わりに、MySQLが起動するまで待機するスクリプトを使用してください。例えば、以下のスクリプトを試すことができます。

    run: |
      until docker exec <mysql-container-name> mysql -e 'SELECT 1' > /dev/null 2>&1; do
        echo "Waiting for MySQL to start..."
        sleep 5
      done
    

コメントの整理

docコメントが無いメソッドとか
コメントアウトしたままになっている不要コードとか

mainブランチにbranch protection ruleを設定

やること

  • 1. 管理者もルールを回避できないようにする(Do not allow bypassing the above setteing
  • 4. マージする前にブランチを最新にすることを強制する
  • 5. 1の設定に失敗してpushしたファイル(branch-rule-test)を削除する

やらないこと

  • PRを自分自身でapproveできないため、以下は個人開発では設定しない
    • 2. PRには一人以上の承認が必要
    • 3. 新しいコミットがプッシュされたときに古いプル リクエストの承認を却下する

PHPCSの導入

やること

  • require dev
  • チェックを実行して指摘された箇所を修正

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.