2010 |
07,20 |
«5日»
ありゃ、何か書いたような気がしたのですが、投稿されてなかったかな…。
5日も空いてしまいました。
cppファイルまたはhファイルの一番上の部分、一般的なクラスでのお話ですが、
cppの場合
・該当するヘッダのインクルード(Hoge.cppなら#include "Hoge.h")
hの場合
・インクルードガード シンボルは <PROJECT>_<PATH>_<FILE>_H_
にする(ここ参照:http://www.textdrop.net/google-styleguide-ja/cppguide.xml)
更にここから他ファイルのインクルードが続きますが、
ここで、順序があるとちょっと嬉しいです、殆ど先程のGoogleのものと同じですが
①標準ライブラリ(iostream, vector,..)
②特殊ライブラリ(boost, Dxlib,..)
③グローバルなファイル(extern, singleton,..)
④依存関係のあるもの(Super, SomeItem,..)
⑤前置宣言(class Hoge)
私はこの順にしています、
見た目的にも、内容を把握するという目的にしても、
なかなか効果が有ります。
5日も空いてしまいました。
cppファイルまたはhファイルの一番上の部分、一般的なクラスでのお話ですが、
cppの場合
・該当するヘッダのインクルード(Hoge.cppなら#include "Hoge.h")
hの場合
・インクルードガード シンボルは <PROJECT>_<PATH>_<FILE>_H_
にする(ここ参照:http://www.textdrop.net/google-styleguide-ja/cppguide.xml)
更にここから他ファイルのインクルードが続きますが、
ここで、順序があるとちょっと嬉しいです、殆ど先程のGoogleのものと同じですが
①標準ライブラリ(iostream, vector,..)
②特殊ライブラリ(boost, Dxlib,..)
③グローバルなファイル(extern, singleton,..)
④依存関係のあるもの(Super, SomeItem,..)
⑤前置宣言(class Hoge)
私はこの順にしています、
見た目的にも、内容を把握するという目的にしても、
なかなか効果が有ります。
PR
2010 |
07,15 |
«1日»
プログラマという職業は「ふつう」の人には厳しくないか
http://ukstudio.jp/2010/01/31/programmer_is_severe_job/
私も、最近はこの様に考えることが多くなりました
他の業種は分かりませんが、
プログラマの中には24時間プログラムの事しか考えていないという狂人、
素っ頓狂な人間がぼちぼち居ます。
しかも、この人たちは、ほぼ無償に近い労働を
文句を言わずする場合が多いのです。
さらに言えば、こういう人間が、プログラマの「ふつう」だったりもします。
適正のない人からすれば、まさに狂った業界ですよね。
私もこれに近い人種ですが、
何より怖いのは、プログラムに対する熱量が
これから年を重ねるごとに減っていきやしないかという事です。
もしそうなれば、もはやこの世界で生きてはいけないでしょうから。
そういう考えもあって、
やはりプログラミングを仕事にしない方が、
良いのかな、と日々考えています。
http://ukstudio.jp/2010/01/31/programmer_is_severe_job/
私も、最近はこの様に考えることが多くなりました
他の業種は分かりませんが、
プログラマの中には24時間プログラムの事しか考えていないという狂人、
素っ頓狂な人間がぼちぼち居ます。
しかも、この人たちは、ほぼ無償に近い労働を
文句を言わずする場合が多いのです。
さらに言えば、こういう人間が、プログラマの「ふつう」だったりもします。
適正のない人からすれば、まさに狂った業界ですよね。
私もこれに近い人種ですが、
何より怖いのは、プログラムに対する熱量が
これから年を重ねるごとに減っていきやしないかという事です。
もしそうなれば、もはやこの世界で生きてはいけないでしょうから。
そういう考えもあって、
やはりプログラミングを仕事にしない方が、
良いのかな、と日々考えています。
2010 |
07,10 |
«6日»
STLコンテナにクラスを入れるのは得策ではないというトピックを見つけまして、
自分は思い切りそれをやっていたので、
色々と試したり、先輩に聞いてみたりしてみました。
(クラスのポインタを持たせるのはOK)
分かった事は、
・コピーコンストラクタ、代入演算子を書く必要が有る
・コンテナが領域を拡張する際に、不具合が起きる
・reserveで領域を拡張している場合はOK
この三つです。
1つ目は良いとして、
2つ目の不具合というのは、
原因は分かりませんが
クラスのインスタンスが無駄に生成されて、破棄されるという
謎のオーバーヘッドが発生するのです。
そもそもポインタで持つ場合より、
コピーする分2倍のオーバーヘッドが有りますが、
reserveで領域を確保せず試した結果、
約4.5倍のオーバーヘッドが確認できました。(コンテナはvector)
つまりこの場合、意図した速度の更に2倍遅いということになります。
ただし、コストは掛かりますが、
飽くまで速度の問題であり、動作事態に影響はない模様です。
無駄にコンストラクトされたオブジェクトは
きちんとデストラクトされます。
つまり、速度の問題であまり悩まなく、
かつポインタで持つ場合になんらかの不具合が有る場合など
有効であるケースも稀にあるようです。
自分は思い切りそれをやっていたので、
色々と試したり、先輩に聞いてみたりしてみました。
(クラスのポインタを持たせるのはOK)
分かった事は、
・コピーコンストラクタ、代入演算子を書く必要が有る
・コンテナが領域を拡張する際に、不具合が起きる
・reserveで領域を拡張している場合はOK
この三つです。
1つ目は良いとして、
2つ目の不具合というのは、
原因は分かりませんが
クラスのインスタンスが無駄に生成されて、破棄されるという
謎のオーバーヘッドが発生するのです。
そもそもポインタで持つ場合より、
コピーする分2倍のオーバーヘッドが有りますが、
reserveで領域を確保せず試した結果、
約4.5倍のオーバーヘッドが確認できました。(コンテナはvector)
つまりこの場合、意図した速度の更に2倍遅いということになります。
ただし、コストは掛かりますが、
飽くまで速度の問題であり、動作事態に影響はない模様です。
無駄にコンストラクトされたオブジェクトは
きちんとデストラクトされます。
つまり、速度の問題であまり悩まなく、
かつポインタで持つ場合になんらかの不具合が有る場合など
有効であるケースも稀にあるようです。
2010 |
06,24 |
«1日»
依存関係逆転の原則(DIP)
これが言っていることは、
・上位は下位のデータを見てはいけない
ということです
しかし、それに従うとすると
上位で下位のデータを利用できないのですから
上位で実装できる内容が下位に渡ることになります
そうなることに、意味はあるのでしょうか
これが言っていることは、
・上位は下位のデータを見てはいけない
ということです
しかし、それに従うとすると
上位で下位のデータを利用できないのですから
上位で実装できる内容が下位に渡ることになります
そうなることに、意味はあるのでしょうか
カレンダー
リンク
カテゴリー
プロフィール
HN:
粘土男
性別:
男性
自己紹介:
レッドストーン、ルシエルブルー、
アラド戦記、ラテール、エルソード、
ファンタジーアースゼロ、などを
せこせことやっております。
プログラミングは、修練中です。
twitter:@rosukaruklame
アラド戦記、ラテール、エルソード、
ファンタジーアースゼロ、などを
せこせことやっております。
プログラミングは、修練中です。
twitter:@rosukaruklame