C++相談室 part139

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

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

前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/

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

■長いソースを貼るときはここへ。■
 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/10/06(土) 01:18:47.18ID:evMRo/Iv0


_sって何
2018/10/06(土) 01:29:10.07ID:JjdhAE/r0
>>2
あれは複数形のsのつもりだった。

個人的には、コードにおいては、aaa に対する複数形の s は、aaas と書かずに
aaa_s と書いた方が分かりやすいと感じることがあるので。

ただ、配列の場合は、複数形の _s を付けて、リンクリストの場合は、
list または、List を付けるようにしている。

今回の場合も、リストなら List と書いたほうがいいかもしれない。
2018/10/06(土) 01:31:32.02ID:JjdhAE/r0
システム・ハンガリアンは、コーディング時の思考の節約になる事がある:

https://mevius.5ch.net/test/read.cgi/tech/1494147712/376
2018/10/06(土) 01:52:36.08ID:OsNJaukk0
意味で考えたら自動的に型は合うでしょ。
意味だけ考えりゃ済むことを二重にするのが思考の節約ってのがわからん。
一重で済めばそれに越したことは無い。

グダグダの設計をなんとかするのにはシステムハンガリアンも有用と思うけど、
まともな設計が出来てれば要らんだろ。

「英雄のいない時代は不幸だが、英雄を必要とする時代はもっと不幸だ」
2018/10/06(土) 02:00:06.62ID:JjdhAE/r0
>>5
ところで、あなたは巨大なプログラムを作った経験ある?
2018/10/06(土) 02:07:35.21ID:OsNJaukk0
>>6
巨大なプログラムの一部を作ったことはあるので、
設計がまともなことなんてまずないことは知ってるよ。
2018/10/06(土) 02:10:13.19ID:JjdhAE/r0
>>5
たとえば、ポインタの場合の先頭に「p」が付いているだけでも、立派な「意味」になっている。

このような一般法則を用いないで、ポインタであるとう意味まで含めた変数名を
付けることは、基本的に不可能。

また、たとえば、名前の入った0終端文字列へのポインタを「pszName」という変数名を
付けているのは、かなり適切に意味を表していると思う。

「name」だけだと CString 型と 0終端文字列なのかの区別も付かない。
また、長いテキストの中の一部だけに着目した文字列の場合は、そのどちらでもないから
「psz」の接頭辞はつけない。

これにより、発見しにくいバグも減る。
2018/10/06(土) 02:17:56.90ID:JjdhAE/r0
>>5
決められたフォーマットでファイルにデータを書き込むような場合、コード中、
メモリ中のデータのポインタと、これから書き込む fseek するためのファイルポインタ、
サイズなどが「対」または「コンビ」のようになって存在することがある。

そのとき、接頭の、fpos、p、size、len などでそれらが区別できることはとても有りがたい。

その場合、

fposData1 = pData1 - pTop;

のようなパターンが現れるだろう。

それに加えて、同じではない微妙に違った関数化が難しいようなパターンが現れくることがある。

そういうような場合に、ハンガリアン記法は、とても重宝する。

正しいコードが、記法からだけでほとんど機械的に分かってしまう事も多い。
10デフォルトの名無しさん (ワッチョイ df7f-vBoO)
垢版 |
2018/10/06(土) 02:20:37.42ID:mx6yHsyJ0
テンプレートじゃ使えないしもはやC時代の遺物でしかないわな
現代じゃ害悪
2018/10/06(土) 02:26:47.17ID:OsNJaukk0
>>8
思考のレイヤが違うな。
やりたいことの意味をプログラムに落とし込んだ結果としてなんらかの型に収まるという考えでやってるので、
型が意味だと言われたら本末転倒な感じがする。

まあ型中心の方がわかりやすいってのならそれはそれでいいよ。
2018/10/06(土) 02:27:05.24ID:JjdhAE/r0
>>10
自分の場合は、自作テンプレートの中でも使ってる。たとえば、

TYPE m_data;
TYPE *m_pPrev;
TYPE *m_pNext;

xxx( TYPE *pPos ) {
・・・
}

などのように。
2018/10/06(土) 02:31:46.61ID:JjdhAE/r0
>>11
たとえば、floatをdoubleに変更したことはあるが、
BYTE 型を int 型に変えたりすることはまず無い。

16BIT時代から32BIT時代へ移行するような場合は、
変更したことはあるが、機械的に置換すればいいというわけではなかった。
32BIT時代から64BIT時代への以降においても、機械的に置換して
済むものではないと思う。
2018/10/06(土) 03:24:51.76
目で追っただけでカメラが視線を検知してどの変数を見てるか特定して型を表示してくれ
できれば脳に直接語りかけてくれ
2018/10/06(土) 07:00:37.46ID:Oq2kvGiO0
ワード幅が変わってもWORDの意味を変えることはできなかったね
2018/10/06(土) 07:10:10.75ID:Oq2kvGiO0
> 「name」だけだと CString 型と 0終端文字列なのかの区別も付かない。

型が知りたいときに宣言を見ないアホを救う必要あるか?
F12を押せば一発だろうが
2018/10/06(土) 07:26:40.45ID:hM5EPMW3a
どのエディタを想定してる?
2018/10/06(土) 07:56:58.40ID:Gg92+MKo0
>>8
> 「name」だけだと CString 型と 0終端文字列なのかの区別も付かない。
今どき0終端文字列なんてAPIに渡したりする時など以外には使わんだろ
ほとんどない例外事項に対処するためによく使うケースの効率落とすのはダメプログラマーにありがち
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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