コードのにおい56 -プリプロセッサ
5579 ワード
私たちのコードは異なった環境、オペレーティングシステムで異なって振る舞うことを望みます.したがって、コンパイル時に決定をすることは最高の決定です.
読みやすさ 早熟な最適化 不必要な複雑さ のデバッグ
すべてのコンパイラディレクティブを削除します. 異なる振る舞いをしたいなら、オブジェクト でそれをモデル化してくださいパフォーマンスペナルティがあると思うなら、早めの最適化を行う代わりに、重大なベンチマークを作ります. サンプルコード
コンパイラ Metaprogramming 結論
問題
解決策
サンプルコード
間違い
#if VERBOSE >= 2
printf("trace message");
#endif
右
if (runtimeEnvironment->traceDebug()){
printf("trace message");
}
## even better with polymorphism and we avoid annoying ifs
runtimeEnvironment->traceDebug("trace message");
検出
これはいくつかの言語によって促進される統語的な指示であるので、それは検出して、本当の行動と取り替えやすいです.
タグ
#if VERBOSE >= 2
printf("trace message");
#endif
if (runtimeEnvironment->traceDebug()){
printf("trace message");
}
## even better with polymorphism and we avoid annoying ifs
runtimeEnvironment->traceDebug("trace message");
これはいくつかの言語によって促進される統語的な指示であるので、それは検出して、本当の行動と取り替えやすいです.
タグ
結論
複雑さの余分な層を追加するとデバッグが非常に困難になります.メモリとcpuが乏しかったときにこの手法を使用した.今日、我々はクリーンなコードを必要とし、我々は過去に埋もれた早めの最適化を残す必要があります.
Bjarne Strroustrupは、C +のデザインと進化の彼の本では、前に作成したプリプロセッサのディレクティブを後悔します.
関係
コード匂い20 -早熟な最適化
マキシ・コンティ・ Nov 8・ 2分読む
#oop
#developing
#coding
#codesmell
詳しい情報
メタプログラミング
マキシ・コンティ・ Jan 30 ' 21・ 7分読む
#codenewbie
#metaprogramming
#oop
#programming
% [ http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.8 ]
% [ https://en.wikipedia.org/wiki/C_preprocessor ]
#ifdef Considered Harmful
クレジット
CDCのUnsplashによる写真
C++ is designed to allow you to express ideas, but if you don't have ideas or don't have any clue about how to express them, C++ doesn't offer much help.
Bjarneストールストラップアップ
ソフトウェア工学大引用
マキシ・コンティ・ Dec 28 ' 20・ 13分読む
#codenewbie
#programming
#quotes
#software
この記事はCodesmellシリーズの一部です.
あなたのコードの臭い部分を見つける方法
マキシ・コンティ・ May 21 ' 21・ 4分読む
#codenewbie
#tutorial
#codequality
#beginners
Reference
この問題について(コードのにおい56 -プリプロセッサ), 我々は、より多くの情報をここで見つけました
https://dev.to/mcsee/code-smell-56-preprocessors-4hf9
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
コード匂い20 -早熟な最適化
マキシ・コンティ・ Nov 8・ 2分読む
#oop
#developing
#coding
#codesmell
詳しい情報
メタプログラミング
マキシ・コンティ・ Jan 30 ' 21・ 7分読む
#codenewbie
#metaprogramming
#oop
#programming
% [ http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.8 ]
% [ https://en.wikipedia.org/wiki/C_preprocessor ]
#ifdef Considered Harmful
クレジット
CDCのUnsplashによる写真
C++ is designed to allow you to express ideas, but if you don't have ideas or don't have any clue about how to express them, C++ doesn't offer much help.
Bjarneストールストラップアップ
ソフトウェア工学大引用
マキシ・コンティ・ Dec 28 ' 20・ 13分読む
#codenewbie
#programming
#quotes
#software
この記事はCodesmellシリーズの一部です.
あなたのコードの臭い部分を見つける方法
マキシ・コンティ・ May 21 ' 21・ 4分読む
#codenewbie
#tutorial
#codequality
#beginners
Reference
この問題について(コードのにおい56 -プリプロセッサ), 我々は、より多くの情報をここで見つけました
https://dev.to/mcsee/code-smell-56-preprocessors-4hf9
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
メタプログラミング
マキシ・コンティ・ Jan 30 ' 21・ 7分読む
#codenewbie
#metaprogramming
#oop
#programming
CDCのUnsplashによる写真
C++ is designed to allow you to express ideas, but if you don't have ideas or don't have any clue about how to express them, C++ doesn't offer much help.
Bjarneストールストラップアップ
ソフトウェア工学大引用
マキシ・コンティ・ Dec 28 ' 20・ 13分読む
#codenewbie
#programming
#quotes
#software
この記事はCodesmellシリーズの一部です.
あなたのコードの臭い部分を見つける方法
マキシ・コンティ・ May 21 ' 21・ 4分読む
#codenewbie
#tutorial
#codequality
#beginners
Reference
この問題について(コードのにおい56 -プリプロセッサ), 我々は、より多くの情報をここで見つけました https://dev.to/mcsee/code-smell-56-preprocessors-4hf9テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol