C++相談室 part134

■ このスレッドは過去ログ倉庫に格納されています
2018/01/20(土) 09:05:42.21ID:mJKRg6iz0
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part133
http://mevius.5ch.net/test/read.cgi/tech/1511509970/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2018/02/17(土) 18:09:26.31ID:Lp1rq1Kt0
良いみたいだ
中でmallocで確保している
2018/02/17(土) 18:10:04.88ID:Lp1rq1Kt0
違う、freeで開放する
2018/02/17(土) 18:14:21.37ID:Q4Uv6cZz0
>>175
弁護士の唐沢です
mallocとdeleteは併用厳禁です。freeを使用してください
2018/02/17(土) 18:18:24.62ID:DOQJ47ER0
昔から気になってるんだが「解放」だよね...
2018/02/17(土) 18:25:00.27ID:Lp1rq1Kt0
そうでした、ごめんね
2018/02/17(土) 18:25:45.10ID:JVoP/9zU0
>>176
良くねえだろ ぼけ

>>179
開放はpublic的なニュアンスだよな
2018/02/17(土) 18:45:39.74ID:uBckbaXI0
>>162
ぶっちゃけた話、 strcpy が一番短いと思う。
183デフォルトの名無しさん
垢版 |
2018/02/17(土) 18:59:50.35
>>182
strdup という答えが出てるのに何言ってるの?
2018/02/17(土) 19:05:58.96ID:uBckbaXI0
>>183
strdup は C++ の仕様の範囲内ではないので……。
POSIX と MSVCRT に有るからほとんどの場合に十分といえば十分なのかもしんないけど。
2018/02/17(土) 19:07:20.59ID:u7LZaTzx0
>>166
接頭辞を見ればデータ内容の属性がワカルというメリットは他に代え難い
ttp://local.joelonsoftware.com/wiki/間違ったコードは間違って見えるようにする

あといちいちthis->xと書くよりも、すすんでm_xと書きましょう
2018/02/17(土) 19:21:01.63ID:u7LZaTzx0
strdup()だと明示的に開放コードをどっかに書かなくてはならなくて必ず忘れるので
せっかくC++なのでスマポ的にwrapすると良いと思う
2018/02/17(土) 19:37:41.81ID:JVoP/9zU0
ホワイトボックスなCでは許せるが
ブラックボックスなC++の流儀には全く合わない
それがstrdup
2018/02/17(土) 19:53:11.68ID:szUqPRvW0
>>173-174 教えてくれてありがとう。
返されるアドレスは等しい値なのか、という単純な質問だったんだけど、
読み直してみたら分かりにくい質問文だと思っていた次第。

それにしても &(*psz)[0] って結構ややこしいのね。
オーバーロードされた[]演算子が返すcharへの参照、
に対してアドレス演算子&を作用させた結果、て感じかな。
2018/02/17(土) 20:37:30.76ID:uaRb1j8RM
すみません、たくさんレスありがとうございます。
_strdupにしてみたら期待の動作ができました。
ありがとうございました。
2018/02/17(土) 21:27:34.68ID:uaRb1j8RM
また質問してすみません。
msvc(vs2017)だとコンパイラをC++17にしても以下のプログラムで
C2664 'void (T *&)': 引数 1 を 'hoge *' から 'hoge *&' へ変換できません。
となってしまうのですが、コードにバグが有るでしょうか?msvcのバグでしょうか?
GCCやClangではコンパイルできます。

#include <memory>
struct hoge {};
template <class T>
inline void safe_delete(T*& p) {
if (p) {
delete p;
p = nullptr;
}
}
int main() {
std::unique_ptr<hoge, decltype(&safe_delete<hoge>)> sp{new hoge(), safe_delete<hoge>};
return 0;
}
2018/02/17(土) 22:11:53.16ID:IU1gsQgu0
(T *&)

そもそも、ポインタ・参照を、同時に使えるのか?
2018/02/17(土) 22:23:52.63ID:EwTJGG8Pd
new hoge()は変数じゃないから、代入できない。
2018/02/17(土) 22:35:58.53ID:I0BNlfaX0
>>165
独習C++ はいいですね、特に演習問題「std::stringを再実装する」を絶賛します
これが書けるようになったらC++初級者をかたってもいいかもしれない、もしかすると解答は載ってなかったかもしれないけれども
2018/02/17(土) 22:35:58.70ID:++v6vSjK0
>>185
どこから引用したのか知らんけど、そのページ読んでないだろ…
システムハンガリアンはまるで役に立たないって書いてあるぞ。
2018/02/17(土) 22:43:42.94ID:I0BNlfaX0
>>194
(システム)ハンガリアンってそんなに悪いものなんですかねえ
いや、win32api がバンバンハンガリアンしているので、そんなもんか、と思っていましたが
2018/02/17(土) 22:51:12.84ID:++v6vSjK0
>>195
OOPともTMPとも型推論とも相性が悪いからね。
MS自身ももう使うなって言ってる。
2018/02/17(土) 22:52:19.16ID:YAgvIyFy0
頭悪いヤツが多様するハンガリアン
2018/02/17(土) 22:54:25.25ID:YAgvIyFy0
嫌いだからハンガリアン意地でも使わなかった
dwやらszやらせっかくのフリーフォーマッとが台なしだよ
2018/02/17(土) 22:59:56.16ID:Q4Uv6cZz0
フリーフォーマットはクソコードの温床ナリよ
2018/02/17(土) 23:03:12.11ID:4SqFrjwY0
型を変えるたびに変数名も変えるのか
ごくろうやな
2018/02/17(土) 23:08:35.57ID:I0BNlfaX0
>>191
それは「ポインタ変数の参照」で、たしか便利に使えた気がしますが…
明日にでもちょっと書いてみます、今日は疲れました…
2018/02/17(土) 23:22:18.45ID:2kmwzB0g0
>>195
システムハンガリアンは弊害ばかりだろうけど、アプリケーションハンガリアンは適切に使えば有益だよ。
2018/02/17(土) 23:25:09.87ID:4SqFrjwY0
mとかいらなくねってなって削ったら_から始まるようになった
2018/02/17(土) 23:38:55.74ID:u7LZaTzx0
データの属性としてサイズとか型そのものを明示したいときはシステムハンガリアンするしかないし、
よってWIN32APIがシステムハンガリアンを使って定義されるのは全く正しい

問題なのはアプリケーションハンガリアンすべきときと
システムハンガリアンすべきときが区別できない香具師が適当に使うと
被害甚大だということやがな…
205デフォルトの名無しさん (ワッチョイ d77f-T3WU)
垢版 |
2018/02/17(土) 23:41:05.97ID:YmD9lILj0
今時システムハンガリアンは無いだろ
20年前で時間が止まってるのかよ
2018/02/17(土) 23:42:44.53ID:u7LZaTzx0
>>205
なぜシステムハンガリアンが有り得ないのかkwsk
DWORDを渡すABIがある日突然気まぐれにUSHORTに変わったりしたら困りはしまいか
207デフォルトの名無しさん (ワッチョイ d77f-T3WU)
垢版 |
2018/02/17(土) 23:49:32.45ID:YmD9lILj0
ググればいいだろ

積極的批判

システムハンガリアンを使っているソースコードを修正してデータ型を変更した際、同時に変数名も変更するコストがかかる。変更を怠ると、たちまち不整合となり、保守の障害となるだけで一利もない。
C++やC#のような言語では型付けが存在するためにシステムハンガリアンを使用することによる利点はない[3]。
移植性を阻害する。
総称型、メタプログラミングとの相性が悪い。

消極的批判

いわゆる良書と呼ばれるようなC++本で、現在[いつ?]システムハンガリアンを採用している例が皆無。
かつてWindows API/MFCにおいてハンガリアンを全面的に採用していたMicrosoft自身が、.NET Frameworkではハンガリアンを禁止[1]している。
2018/02/17(土) 23:52:28.19ID:YEFSbrC50
申し訳ないがコピペディアからのウィキペはNG
2018/02/17(土) 23:54:40.85ID:4SqFrjwY0
型なんてマウスオーバーなりすれば表示されるだろ
変数名に書いておかなきゃわからないとかメモ帳で書いてるのかよ
2018/02/18(日) 00:10:56.39ID:OOIPfNvY0
>>190
デリータはポインタが指す先のリソースを後始末するのが仕事であって、
ポインタが無効になるという処理は unique_ptr の側でやってくれるので、
ヌルを代入する必要はない。
むしろ unique_ptr 内で管理しているものをデリータが勝手に弄るのは好ましくないので、
参照で受けるのはやめてさしあげろ。

私なりに仕様を読んでこの場合をエラーにする根拠は発見できなかったが、
エラーになってくれる方がありがたい場面だと思う。
2018/02/18(日) 00:16:38.53ID:Ct2k6iqr0
デリータに渡されるのは左辺値と限らないからだろう。
2018/02/18(日) 00:25:54.07ID:OOIPfNvY0
N3337 だと 516 ページの説明がデリータの要件だと思うんだけど、
デリータ d の型が D で ptr の型が unique_ptr<T, D>::pointer のとき式 d(ptr) が valid であることと書いてあって、
ptr が rvalue か lvalue かってのは特に指定がない。 (どこかに書いてあったりする?)
この説明で言ってる ptr が変数名なのだとしたら暗に lvalue とほのめかしてるようにも思えなくもないし、よくわからん。
わからんことは避けて通りたい。
2018/02/18(日) 00:30:57.46ID:OOIPfNvY0
私なりの見解としては未定義だと思ってる。
未定義ならばやったらエラーになる方向にしてくれる方がありがたいという思い。
2018/02/18(日) 00:35:36.09ID:ju8BsRCFM
>>206
ABIにシステムハンガリアン関係ないだろ…
APIを指してるとして、呼び出し側はリファレンスマニュアルなりIDE機能なりを利用して引数の型情報も
システムハンガリアンが付いている仮引数名と同時に参照しているはずだよね?情報重複してるけど本当に必要?
仮引数名のシステムハンガリアンの有無に関わらず、APIのシグネチャは用意に変更してはならないものだけど、
そもそも仮引数名はシグネチャじゃないからシステムハンガリアンがついていたって何の保証にもならないよ?
2018/02/18(日) 00:51:32.90ID:OOIPfNvY0
重複する情報をコンパイラの支援なく一致させ続けることが出来るだろうか。 いや、できない。
って話よね。
まあ世の中にはそういうのを検査するツールとかもあるんだろうけどさぁ、
そういうツールを導入できる環境ならまともな IDE だって使えるだろう。
2018/02/18(日) 08:06:35.40ID:F3zIry6ZF
>>210
>>211
レスありがとうございます。
shared_ptrだと行けるのでなんかすればコンパイル通るのではないかと
思ったのですがだめなんですね〜。
普通に使う用とカスタムデリータに使う用と二種類用意してやり過ごしてみたいと思います。
template <class T>
inline void safe_release(T*& p) {
if (p) {
p->Release();
p = nullptr;
}
}
template <class T>
inline void custom_deleter(T* p) {
p->Release();
// p = nullptr; no meaning
}
2018/02/18(日) 12:41:44.81ID:OWXn9djh0
>>207
藻前はレスをきちんと読んでいないのではないか
>システムハンガリアンを使っているソースコードを修正してデータ型を変更した際、同時に変数名も変更するコストがかかる。(>>207
に直接対応する元レス>>206は、
>データの属性としてサイズとか型そのものを明示したいとき(>>204
について述べているのでデータ型変更時のコストを言い立てても批判にならない

消極的批判については、アプリケーションハンガリアンすべきときと システムハンガリアンすべきときが
区別できない香具師の的外れな批判がクソウゼーからそうなったのかもしれん、
(ちな両者を区別できない香具師への警戒も>>204で言及済み
2018/02/18(日) 12:42:38.82ID:OWXn9djh0
>>214
十分賢いIDEが人間のミスを完璧に排除してくれるんならそうかもしれんが
システムハンガリアンをしてはいけないという積極的理由にはやはりならないのであった
それとも「間違ったコードは間違って見えるようにする 」(>>185)の効能を全否定する?

APIの定義は変わらなくとも、それを利用するソースコードがころころ変わり得るわけで、
byStrLength
にある日だれかがDWORD型の値を突っ込んだとしたら…

こういうケースを考えたら、「接頭辞を見ればデータ内容の属性がワカルというメリット(>>185)」は
ありえないぐらい賢いIDEでも使わないと他に代え難いと思うがどうか、

>>198
>嫌いだからハンガリアン意地でも使わなかった
おk ようやく建設的な議論に着手できる、
2018/02/18(日) 13:01:54.53ID:Tc3/Tap60
あり得ないくらいバカなプログラマのことなんか考慮してない
2018/02/18(日) 13:02:14.72ID:hSV7DJYb0
マウスオーバーで変数の型を確認できたり、縮小変換に警告を出してくれたりする程度のありふれた機能が、ありえないぐらい賢いとな
お前さんはメモ帳でコーディングしてるのか
2018/02/18(日) 13:06:54.12ID:AAhzNgFK0
>>220
emacs にもそんな機能がほしいと思うことがあります
222デフォルトの名無しさん (スッップ Sdbf-0Jtz)
垢版 |
2018/02/18(日) 13:20:53.92ID:y51LwXumd
システムハンガリアンでミスを減らせるなんて事はない
むしろ害悪
2018/02/18(日) 13:27:53.30ID:Tc3/Tap60
>>221
俺のemacsには搭載されてるんだが
環境構築もプログラマの腕のうちだからな
2018/02/18(日) 13:30:05.77ID:OOIPfNvY0
>>221
有るよ。
irony-eldoc や company-mode を入れろよ。
Emacs こそ最強の IDE だろうが。
2018/02/18(日) 13:38:55.48ID:R2RwPqEs0
今時システムハンガリアンを使うやつはあり得ないくらいのバカだということが決定しました
2018/02/18(日) 13:41:43.01ID:IMbK2zhKM
>>218
間違ったコードは間違ったように見えるようにする、について、
あなたが指し示した引用元が言及してるのはアプリケーションハンガリアンについてなんだけど…
システムハンガリアンについては否定的意見。
ちゃんと読んだの?
2018/02/18(日) 14:10:40.14ID:AAhzNgFK0
>>223 >>224
thanks a lot!!
2018/02/18(日) 14:15:44.65ID:IMbK2zhKM
>>218
APIの仮引数にシステムハンガリアンをつけたことで、間違ったAPI呼び出しが間違ったように見えるのはいつ?
APIのリファレンスなり宣言文なりを自分のコードと見比べたときでしょ?その時必ず型情報も見てるよね?情報重複してるよ?
あとIDEが自動でミスを排除してくれるなんて書いてないよ?ちゃんと読んで
2018/02/18(日) 15:46:49.02ID:Tc3/Tap60
入れる変数の型と引数の型を確認しない奴とかいるのか
暗黙の型変換は警告を出せばいいし
どうしても見落とすのならコンパイルエラーにしてしまえばいい
あとメンバ変数もテキストの色を変えればいいからm_もいらない
2018/02/18(日) 16:01:36.00ID:dLlRK2Wa0
m_はホント見苦しい
2018/02/18(日) 20:07:07.34ID:8oVyjimH0
m_だけならまだ我慢できるけど
this->を必ず付けるルールと併用するのは本当にやめろどっちかにしろ
2018/02/18(日) 20:15:52.43ID:eae4wPFh0
> this->を必ず付けるルール

破門だろ
C++使うなそんなボケどもは
2018/02/18(日) 21:14:42.68ID:SQcbDAgv0
ちげえんだよなぁ
thisというキーワードが存在してるから、その存在そのものが、それを書かねばならないような強制力を産み出してる
「存在するが、書かなくてもいい」っていうどっちつかずが、一番論争になる

その反対が「存在しないから書けない」だ
これだと単純明快だ
なんせ、書けない

「書くべきか書かざるべきか」のどーーーでもいい二択に迫られると、とたんに宗教になる
2018/02/18(日) 21:16:52.71ID:eae4wPFh0
キーワードが存在するのと実体が存在することの違いがそんなに大事なのか?
じゃあvtableのキーワードが存在しないことを、おまえはどう考えている?
2018/02/18(日) 21:33:09.71ID:Pbt6vSqU0
>>231
オケツに_をつけてますわ
2018/02/18(日) 21:33:14.46ID:dLlRK2Wa0
おれがそのソースを引き継いだらまず初めにやることは一つ
「this->」から「」への全ソース一括置換
2018/02/18(日) 21:56:25.56ID:Ct2k6iqr0
「m_」はダメで「_」ならいいってのはなんというか、合理的な理由よりも感覚・感情的なものかね。
2018/02/18(日) 21:57:31.39ID:AAhzNgFK0
this-> つけるほうが分かりやすくていいと思うのですが、変てこな接尾辞・接頭辞よりも
239デフォルトの名無しさん (ワッチョイ d77f-T3WU)
垢版 |
2018/02/18(日) 22:00:36.01ID:tWqaO5mz0
m_xxx も xxx_ もなんの保証にもならんからな
this->は必ずメンバになるけど
2018/02/18(日) 22:37:59.28ID:UEE7OeWn0
_はグーグルスタイルの圧力
2018/02/18(日) 22:42:10.00ID:WjKwYRHz0
余計な命名規約を作るくらいなら言語機能を使った方が良いわな
this->派だわ
2018/02/18(日) 23:21:23.43ID:AjuHfv4B0
thisで明示した方が所在がハッキリして良いナリ
当職は名前空間もusingせずに明示しろ派ナリ
安易な省略はタイプ数を減らすという軽微なメリットと引き換えに可読性を落としケアレスミスを誘発するという恐ろしいデメリットを孕むナリ
2018/02/19(月) 00:00:39.93ID:hDVR9PRD0
>>237
「m_」はいらないな

ローカル変数とかと名前が被ってめんどくさい

キャメルケースにはしたくない

「_」だけ残る
2018/02/19(月) 00:14:25.92ID:o8qstbSZ0
_付けるなら変数の後ろだろ
245デフォルトの名無しさん
垢版 |
2018/02/19(月) 00:18:14.94
C/C++なら必然的に末尾に付けるしかない
先頭に_付けるような情弱は死ねばいい
Perl/Pythonだと先頭に付けるけどな
2018/02/19(月) 00:42:17.66ID:SSx66hQd0
やらんけど、前一つなら規約には引っかからないんじゃなかったけ
2018/02/19(月) 00:57:15.60ID:hDVR9PRD0
未定義なのは
_始まりでグローバルスコープにあるもの
_始まりでアルファベットの大文字が続くもの全て
__で始まるもの全て

1番目の_始まりなだけならローカル変数、引数、メンバでは予約されていないので使ってもよい
2018/02/19(月) 01:15:36.25ID:gMMBYzvP0
>>238
名前に変なルールを導入するか this を付けるかの二択であれば this の方がマシというのはわかる。
わかるが、必ずつけるルールにしちゃうとかなりウザいわって話。
2018/02/19(月) 01:20:40.79ID:gMMBYzvP0
>>242
わかるんだが、そういうルールってすぐに教条主義に陥るからうんざりする。
技巧として使う using にまでグダグダ言うやつが絶対に出てくる。
2018/02/19(月) 02:05:55.66ID:hDVR9PRD0
コーディング規約はうろ覚えだけど自由度の高いBoostスタイルを薦める

publicな識別子はstdに合わせて小文字スネークケース
マクロはBOOST_から始める
インデントはスペース、一行の文字数は80文字を推奨
意味のある名前を付けることを推奨
ファイル構成に関するもの
その他細々としたもの
ライブラリごとのローカルルールがある場合もある

あとは自由
thisを付けろだとか改行の仕方だとかは一切書かれてない
2018/02/19(月) 02:37:36.58ID:SEa8F8NC0
>>248-249
お互いにマナーを守る世界は過ごしやすいがマナーの厳守を要求し出すと途端に息苦しくなるナリ
自分にも他人にも読み易いコードを書こうという気遣いが見て取れるなら細かく突っ込んだりはしないナリ
2018/02/19(月) 05:40:18.76ID:wBFQMwB50
this->で必ずメンバというやつら
じゃあ必ずブロック内変数という表記もしたらどうだ
2018/02/19(月) 12:45:29.69ID:yTAVcy/Ya
使うライブラリや開発環境の内部のスタイルに合わせるけどな。
派生クラスとかAPIのラッパークラスとか作り始めると、
どうしても内部の書き方に合わせておいた方が読みやすいし。

今でもWin32とかMFCでやることもあるけど、
そのときはm_とかpとかhとかdwとかバンバンつける。
2018/02/19(月) 13:19:17.15ID:gMMBYzvP0
使う側の都合に合わせろよ。 ラップしてるのに中身のスタイルが漏れてるんじゃラップの甲斐がなくね?
中身を知ってる人がちょっとした便利のためだけに薄いラッパを作る場合ならそういう選択もあるだろうけど。
255デフォルトの名無しさん (ワッチョイ 9f9d-MriG)
垢版 |
2018/02/19(月) 14:36:30.11ID:00nJVfHA0
コンバータにあわせろよ。C#で作ってコンバータかけた方が綺麗スッキリするんだから。
2018/02/19(月) 19:36:41.65ID:2cNNs3G6M
>>253
そりゃAPIに渡す構造体でdwSizeとか使われてたらそこだけは合わせざるを得ないけど自分のコードスタイルを合わせる必要はないだろ
2018/02/19(月) 20:29:38.46ID:czaD+lHv0
>>230
m_のmは目立つのm、

>>228
ここ構造体メンバとか、
2018/02/21(水) 00:43:21.00ID:jU0tYaxw0
Windows メインで作業されている方で、
valgrind を併用している方はおられませんか?
もしよろしければ使用感をお聞かせいただけませんか

operator new()/operator delete() 乗っ取りデバッグに限界を感じてしまっている状況です
(cl や bcc32/bcc32c/bcc64 では new/delete 乗っ取りができません)
いや、さっさと入れればいいのですが、仮想環境とかよくわからないし…Vine Linux 以来触ってないし…
2018/02/21(水) 01:13:14.52ID:wPLJFyuu0
windowsならapplication verifier使えば?
2018/02/21(水) 09:49:28.54ID:8k15W99L0
以下のURLのプログラムでSFINAEを試してみていて
https://wandbox.org/permlink/LqKmn50PaPbtohs5

BOOST_TTI_HAS_MEMBER_FUNCTIONを使えば
has_funcというメタ関数を使わずに済んで、短くできないかと試行錯誤中なのですが
うまく行きません。

どうやったらビルドが通るようになるでしょうか?
2018/02/21(水) 18:31:01.90ID:8+abUSIR0
まずはそのうまく行かないコードを示したら?
2018/02/21(水) 19:26:19.92ID:UifE8nP3d
>>260
https://stackoverflow.com/questions/87372/check-if-a-class-has-a-member-function-of-a-given-signature
2018/02/21(水) 19:34:37.06ID:EmINyJBAF
すみません、BOOST_TTI_HAS_MEMBER_FUNCTIONを使って短くする以前に元々が間違っていました。
以下の3つでオーバーロードしたかったのでした。
・funcというメンバ関数を持つダブルポインタ
・funcというメンバ関数を持たないダブルポインタ
・それ以外

それで思ったのですが多分、Boost.TTIライブラリで
〇〇というメンバ関数を持つクラス、を識別するメタ関数は作れても
〇〇というメンバ関数を持つクラスのダブルポインタ、は無理な気がしてきました。
一旦諦めようと思います。
2018/02/21(水) 23:10:49.37ID:EmINyJBAF
msvcでもGCCでもビルドできるのが
どうにかできました。お騒がせしてすみませんでした。
https://wandbox.org/permlink/HDwsuoVReqJEXWsO
2018/02/22(木) 10:26:41.79ID:qwLRFwLN0
>>263
あと2年待てばconceptできるかもよ
2018/02/22(木) 21:31:34.66ID:SOkZDC9P0
(VBみたいな名前付き引数が実現されたら
 システムハンガリアン否定論者をぎゃふんと言わせられるのに…
2018/02/22(木) 21:55:24.65ID:qwLRFwLN0
システムハンガリアン発祥の会社が何か作ったら否定論者がぎゃふんと言うのか?
おまえの頭の中は論点先取だか循環論法だかがグルグル回っているようだな
2018/02/23(金) 22:10:42.23ID:XlnyEs6k0

想像してごらん全ての人々が
 dwRet = ::WaitForSingleObject( hHandle = m_hThread, dwMillisecond = m_hTCTmo )
と書く世界を、
2018/02/23(金) 22:11:40.62ID:XlnyEs6k0
ごめ
誤: m_hTCTmo
正: m_dwTCTmo

見れば間違いがワカルのがハンガリアンの極めて良いところ
2018/02/23(金) 22:21:40.17ID:R3lraTlNM
>>269
>>196
2018/02/24(土) 10:44:07.22ID:mn7A8TMg0
一分間で間違いに気づいてはいるものの
そもそもの書く瞬間にはどうやら人智を用いても気付けないらしいから
IDEにエラー出してもらった方が早いんじゃあねえの

実は人間の集中力を超えたところにある方法論で、実践するとストレスが溜まるっぽいから、機械任せにした方がいい
それに、書いてる最中は変数の型まで考えたくない

見て分かることは、機械任せにすれば見なくても分かるから、
今のご時世、人間の有限の集中力を目視チェックなんかに使いたくない
脳みそのリソースはもっと別のところに使うべきだ

つまりは、書いてる最中は脳みそが「それが正しい」と思い込んでるから、
間違いは自分自身では絶対に分からない
これがバグを作り込む
hだったかdwだったかを脳が自動的に混同してるから、その分だけ余計に脳のリソースを使っている

「なんで書いている最中に自分自身で気付かないのか」、これ、とても重要だよ
272デフォルトの名無しさん (スップ Sd02-2/+O)
垢版 |
2018/02/24(土) 11:11:20.01ID:51zBno3Kd
変数名と型が一致してるという保証がゼロだからシステムハンガリアンなんて無駄以外の何物でもない
無駄というか悪
2018/02/24(土) 12:15:45.87ID:mm9B9rZ50
>>272
俺のレスもプログラムも表現と意図が一致してるという保証がゼロ、
まで読んだ
2018/02/24(土) 12:23:50.23ID:b3ZDZ7IS0
その場合、やめられる方だけやめればいいな
つまりハンガリアンを。
2018/02/24(土) 12:27:42.98ID:pqM6ijVV0
まともな開発環境使っていれば必要ないのでは
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況