2022-10-04

変数名前付けはしっかりと意味のあるものしろって本に書いてあるけど

for文の回す変数でもしっかりと書いたほうがいいの?

for(i=0 ; i<5; i++)とかしょっちゅうかいてるんだけど

  • 3行程度でしか使われない 配列・コレクション・イテレータの要素としてループで使用される ならi,j,k,x,yとかでいいよ

    • 100とか超えると駄目な感じ?

      • 超譲歩して 100行の超巨大ループがあるとして、添え字としてのint i,j,kなら許してやろう それ以外は殺す そもそもそんな巨大なループ作らないほうがいい

        • だってるーぷ以外が思いつかなくて・・・・(言い訳)

          • ループの中の処理を20行くらいずつ小さな関数にするんだよ。 そうすれば、ループの中では5個関数よぶだけになるやん。

            • え、それでいいの? そっちのが見やすい感じなのか

              • 場合による 場合による 場合による

                • そっかーw でもまあ100行以上は見にくいってのはわかったから 値渡しには注意しながら改修してみるわ

                  • 100行のままでも、意味的に { } インラインブロックで切ってあっても読み易いよ。

                    • のちに仕様変更でそのブロックがまるごと不要になったりする。ちょうどブロックで囲んであるから if (0) { ... } に変えておく 新入社員から「絶対に実行されないif文があるんですけ...

                    • あー、なるほど。その発想は知らなかった 私コメントで解説してたわ //ここまで○○処理// //こっから○○の値取得// //ここテスト用の変数確認式だから消さないで// とかそんな感じで

              • とりあえずベタで書いてからメソッド切り出しすんのも手やぞ 昨今のエディタならメソッド切り出しとか変数名置換とかあるやろ

                • そうそう。 最初から完璧にしようとするからしんどいんだよ。 だからウォーターフォールは往々として炎上するんだし。 プログラミングはメソッド切り出しとか変数名置換が当たり前...

                  • SIerのウォーターフォールでもprivateメソッドの設計まで細かにやるのは流石に稀だと思うよ だいたいはpublicの設計してあとはPG任せでしょ

                    • 書き方が悪かったな、すまん。 「最初から完璧に」っていうのはシステム全体の仕様の話な。 それにしても、この日本でも最近のPJは自動テストとかリファクタリングが多いんだろうな...

            • 恋はデジャブ オール・ユー・ニード・イズ・キル バタフライエフェクト 時をかける少女 みたいなのはループ関数なの?変数なの?

        • そんなループ許すなや

  • その短い綴りで使い捨てのカウンタであることを示しているので問題ない。 ただ、C++であればインクリメントは前置で書いたほうがいいね、習慣として。

    • C++は++Cにしたほうがよかった…ってコト!?

    • >>その短い綴りで使い捨てのカウンタであることを示しているので問題ない。 なるほど!確かに あとC++はC言語挫折した身なので・・・

    • ただ、C++であればインクリメントは前置で書いたほうがいいね、習慣として。 これってコンパイラがカスだった太古の昔の老人の習慣と思ってるんだけど現代でもなんか意味あるの?

      • インクリメントを前置で書くと、「お、わかってるじゃねえか」と古参兵たちがニッコリしてくれる。 今度とんかつでも奢ってやろうか、ということになる。 もしインクリメントを後置...

        • ワイは、けっこうマクドすきやで。

        • じゃないC古参兵だけど なんで前置がいいのかわからんから教えて

          • https://programming-place.net/ppp/contents/cpp/language/019.html 効率がいいんですよ…。

            • あー、オーバーロードがある言語特有の事情なのか ピュアC兵にはわからんわけだ

              • 前置でも後置でも結果は同じになるセンテンスの効率? 普通の人間にはまず関係ないから 無視してい良い奴だよ

        • 古参の老人と飯なんぞ食わなきゃならん時間はなるべく短くしたいという意味でマックの方が正解なのでは

  • それは1文字でいいよ。 スコープが狭くて重要でない変数は1文字でいい。 2行のコードでしか触れない変数 t をコードレビューで1文字はいかんって言われたからむかついて temporary に...

    • いみねーw 対して頭使わなくても問題ないようにの施策なはずなのにw

  • 数えるためだけのイテレータは数少ない例外やで まあi、j、kと増えてきたらiGroup、iItemみたいに意味のある名前にしたりするけど

    • なるほど、1つ2つぐらいならいいけど増え初めたら名前をつけるφ(..)メモメモ

  • そういう変数はiとかでいいよっていうのも書いてあるはずだけど読んでないの?

    • おっそ 反応遅いうえに上から目線 そんなんだからお前は後輩にもウザがられてるんだよ

  • zyzyがプログラミングのアドバイスをしている…!?!?

  • ループに使うiは数学のやつを移植してきた文字だから一応意味あるんじゃなかったけ?

    • 虚数だってコト…!?

    • 元はFORTRANの暗黙の型宣言で変数名の頭文字が[i,j,k,l,m,n]の6つのいずれかであれば整数型変数とみなされたので(それ以外は明示的に型宣言をしないと実数型となり処理速度が遅くなる)FO...

      • そのFORTRANでiスタートな理由を辿れば結局同じ話に行き着くやろ

        • i は integer の i ってこってすね。

          • iteratorのiな

            • indexだろ

            • FORTRANの暗黙の型宣言で変数名の頭文字が[i,j,k,l,m,n]の6つのいずれかであれば整数型変数とみなされた   という説明からそういう結論が出て来るのか?

            • 整数型の変数と言えば iterator としての用途しか思いつかないタイプ?

              • カウンタの用途だったらやっぱiteratorでは

                • cじゃないのはなんでだ

                • 整数型の変数と言えばカウンタとしての用途くらいしか思いつかないタイプ?

                  • むしろループ以外でi単体を使うケース早々ないが

                    • それは現状で i 単体の使われ方の話であって、FORTRANの暗黙の型宣言で変数名の頭文字が[i,j,k,l,m,n]の6つのいずれかであれば整数型変数とみなされる設計になっていた由来の話ではないぞ...

  • i自体に意味があるじゃん。 Cの教本読んでれば大抵iの意味を覚えてると思うんだが?

  • まずfor文でカウンタ回すというのをなるべく避けた方がいいかな

    • 順に回したいときは、どうすればいいのですか?

      • 最近の言語ではforeachとかコレクションやストリームを回すための構文やメソッド、関数が存在するのでそれで回すのが現代風

      • イテレータという仕組みを使う C言語のようにイテレータをサポートしていない言語や、カウンタの持つ「値」に意味がある場合はカウンタ回すしかないけど

  • 変数の有効範囲が広いほど、わかりやすい名前をつけるべし(グローバル変数など) 有効範囲が短い変数は短い名前でも良し(for文のカウンタなど) のようことは書いてないか 書いて...

  • よく知らない英語より日本語を使った方がいい、という意味かもしれない。

    • でも日本語はあれこれ誤導してる言語だよね 英語のほうが一意でいいわ

      • でも変数名にも漢字を使うと短くできていいよ。「生年月日」とか「試行回数」とか。

        • タイプ量増えとるやん……

          • IDEのエディタが覚えててくれるし、なんなら「b生年月日」みたいにしておくと楽。

            • 俺も妙ちきりんな英単語使うくらいなら日本語にしたほうがいいんじゃないかと思ったりもするけど、度胸がなくて踏み出せないよ

              • プロVBAマクラーだけど、変数定数関数全部日本語やで 完成品ぶん投げた先の部署のメンテナンスくんから 「コード見た瞬間蕁麻疹出そうになりましたけど確かにわかりやすいです」 っ...

                • 全角半角切り替えるのだるすぎだろ

                • 仕事で共有するソースはなあ.. 自分ひとりじゃ決められないからなぁ コーディング規約とかあるし。 まあ、いざとなれば痴漢しちゃえばいいんだけど。

      • 英語も同じような意味の単語があって、どれ使うのが正解なんだろうって悩むことない?

  • 「i」はindexの略だから別にええやろ

  • これでも初学の時に一回は疑問に思うよな そんで誰も教えてくれないっていうかググれない

  • これの発端書いたものです。 皆さん勉強になりました。 ありがとうございます😭

  • scopeが狭いものはOK

  • ループがネストする時は意味付けてる 配列添え字なら、その単語(支店コードなら、[branchCD]) 単なる連番やら何かのカウンタなら [xxxIdx][xxxCnt] ただまぁ、構造化をきちんとしてオブジ...

  • コードが長大になる場合には、その箇所を他と区別できるようにするため、重複の恐れがある変数名は避けると良いと聞いた。iではなくてiiとすると後々の検索の際に便利とも。

    • そうそう。検索性という観点で、変数名をつけるのってすっごく大事なんだよね。 あとはエディタの補完機能での選びやすさ。 二文字打って候補が20あるより、5に絞られるような命名法...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん