-
Notifications
You must be signed in to change notification settings - Fork 176
stdafx.h からプロジェクト内のヘッダーファイルを取り除く #1615
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
stdafx.h からプロジェクト内のヘッダーファイルを取り除く #1615
Conversation
9754249 to
57872ee
Compare
|
自分は「誤用である」かについての議論に参加する気はないですが、削除、削減することに関しては、賛成です。 |
|
❌ Build sakura 1.0.3632 failed (commit 3ed2b7ab0d by @k-kagari) |
|
❌ Build sakura 1.0.3633 failed (commit 8521a75eab by @k-kagari) |
fd7a41c to
e42b45b
Compare
|
✅ Build sakura 1.0.3634 completed (commit c21021e534 by @k-kagari) |
|
✅ Build sakura 1.0.3637 completed (commit 14ce7eafe1 by @k-kagari) |
|
肯定的なお言葉をいただいていますので Draft を外します。 静的解析の警告についてはほぼすべて既存の問題と思われます。 差分が巨大でレビューが難しいかもしれませんが、大部分は #include や前方宣言を追加する機械的な変更です。stdafx.h の差分を重点的に見ていただけると助かります。 |
stdafx.hの該当部分にその旨コメントしておいたほうが良いと思います。 例👇 // 以下はプロジェクト内のファイルだがプリコンパイルしておく。
// (ビルドパフォーマンスが著しく悪化するため。)
#include "env/DLLSHAREDATA.h"パフォーマンス悪化の原因は「ヘッダー依存関係が不適切だから」だと思っています。 |
コメントを追加しました。 |
|
SonarCloud Quality Gate failed.
|
|
✅ Build sakura 1.0.3638 completed (commit 59dc358634 by @k-kagari) |
|
マージしました。レビューありがとうございました。 |
PR の目的
stdafx.h からプロジェクト内のファイルを可能な限り除去し、コード修正後のビルド時間の削減を狙います。
カテゴリ
PR の背景
サクラエディタのコードについて以前から指摘されてきた事柄の一つとして、プリコンパイル済みヘッダーの使用方法についての疑義があります。
プリコンパイル済みヘッダーは通例めったに内容が変わらないファイルを先にコンパイルすることでビルド時間を削減します。プリコンパイル済みヘッダーに含まれるファイルはプロジェクト内のすべての翻訳単位からの依存関係が生じるため、不適切なファイルをインクルードすると却って生産性を削ぐ結果となります。これを踏まえた適切なインクルード対象は標準ヘッダーや外部ライブラリのヘッダーであり、プロジェクト内の共通ヘッダーなどよく使うファイルをインクルードすることは誤用であるという指摘です。
この PR は stdafx.h からプロジェクト内のファイルの大部分を除去するものです。stdafx.h のありかたについての合意が形成されているか定かではないことから、現状では Draft としています。
PR のメリット
PR のデメリット
仕様・動作説明
プロジェクト内のヘッダーファイルのすべてを除去する予定でしたが、env/DLLSHAREDATA.h に限り存置しています。リビルド時間が大幅に悪化したため妥協せざるを得なくなりました。
PR の影響範囲
テスト内容
バイナリのテストは不要だと思います。
参考資料
VS2019/C++: stdafx.h stdafx.cpp または pch.h pch.cpp つまり「プリコンパイル済みヘッダー」( Precompiled Headers ) の使い方のメモ