アカウント名:
パスワード:
昔のコンパイラには識別子の長さについて制限のやたらきついものがあったので、無理やり短縮した名前にせざるを得なくなって自分でも何が何やらわけのわからない名前になってしまうことがありました。まぁアセンブラのニーモニックだってそのアーキテクチャに精通してない人にはたとえ規則性があったとしてもなんじゃこりゃ~なわけで、まぁあんな感じです。MASMだって識別子は確か31文字くらいに制限されていた時代があったはず。もっと古いアセンブラのラベルなんて8文字に制限されているものもあったり。
というわけで、「無理やり短縮した識別子」は「もうやらなくていい昔のコーディングテクニック」です。
それ自体に大した意味があるわけではない変数に大仰しい名前を付けると却って可読性が悪くなるような。
「i, j, k といったら整数変数」のような古き良きお約束は、お約束が通じる状況でお約束を守っている分には理解の助けになるので、それ自体は現役のスタイルだと思う。
でも、変数名に意味が無い i とか j とかを文脈無視して使いまわすのは勘弁な!
お約束が通じる状況でお約束を守っている分には
そうそう。ネストされているループの外側がjで、内側がiとかになってなければOKかな。
あと、「もったいないからループ処理のあとでもう1回だけフラグとして使うよ」なんてエコなことをされていなければね。
>「i, j, k といったら整数変数」のような古き良きお約束
同感。なのだけど、グリフ的な問題として、iとjをミスタイプした挙句、ソースを眺めてもなかなか気づかなかった、という経験はしたことありませんか?いい解決案はないですかね。i の次は ii にするとか?
自分は、スコープの長い変数には必ずdescriptiveな名前を与えるというルールで書いています。つまり、ループ変数でもループ自体が十分長ければ i ではなく意味のある名前を与えるということです。スコープが短く、一画面で見通せるくらいの長さならば i でもOKということにしてます。
別の角度からの解決策として、単語を検索したりハイライトしたりするのが得意なエディタ/IDEを使え、ってのもあります。
たとえばvimなら「i」にカーソル合わせて「*」キーを叩けば、「i」が黄色とかにハイライトされます。むろん「j」はされません。「*」で捕捉されるのは単語単位なので「ii」とかもハイライトされません。
ちょくちょく「*」で確認する癖をつけると、変数名取り違えの事故がだいぶ減りました。ていうか殆ど起こさなくなりました。これはかなり劇的な効果があったなあと思っています。
Eclipse(のJava環境)でも、ある単語というか識別子にカーソルを合わせると、同じ識別子が灰色っぽくなりますね。
1. * または # で検索履歴に「\」を拾う。2. / でキーワード検索に入り、Ctrl+P で「\」を呼び出す。3. 後ろの「\>」を消して再検索する。
# ちょっと手順長いですかね?# でも g* ではダメなんですよね?
基本的にマッチなので、マッチ「しない」ことを探すミススペル探しには、あまり向いてないと思います。どちらかというと、期待する位置がハイライトされていないことを目視で見るという消極的なやりかたに…
あと方向性というか用途が違うけど、柔軟ひっかけのために、ctagsのようなタグジャンプデータベース(?)作成ツールを「カスタマイズ」するという手もあります。特に最近のLinux DistroとかではデフォになってるExuberant ctagsだと、(Windows版もありますね)正規表現を使ったそれなりに凝ったタグジャンプ検出ルールを比較的楽に自作設定できるんで、お勧めです。よくありが
よくわからないんですが、vimの「*」は「\」というパターンを検索バッファに入れるだけなのだから、「「\」を拾う」だけなら単に「/を叩いて\を入力する」だけでいいんじゃないでしょうか?
おっと失敬、化かしてしまいました。
> 1. * または # で検索履歴に「\」を拾う。> 2. / でキーワード検索に入り、Ctrl+P で「\」を呼び出す。
履歴に取り込んで再利用するのは「¥<aVar>¥」です。
ミスタイプは長い名前の方が起きやすいんじゃないか?(コピペonlyの人には関係ない話)
そこまで重要な変数にiとかjと言った名前をつけるのが問題かと。
orz
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
わかりやすい(無理やり短縮されていない)識別子 (スコア:3, 参考になる)
昔のコンパイラには識別子の長さについて制限のやたらきついものがあったので、無理やり短縮した名前にせざるを得なくなって自分でも何が何やらわけのわからない名前になってしまうことがありました。まぁアセンブラのニーモニックだってそのアーキテクチャに精通してない人にはたとえ規則性があったとしてもなんじゃこりゃ~なわけで、まぁあんな感じです。MASMだって識別子は確か31文字くらいに制限されていた時代があったはず。もっと古いアセンブラのラベルなんて8文字に制限されているものもあったり。
というわけで、「無理やり短縮した識別子」は「もうやらなくていい昔のコーディングテクニック」です。
屍体メモ [windy.cx]
ループ変数 (スコア:0)
#とか、わざと書いてみる。
Re:ループ変数 (スコア:0)
それ自体に大した意味があるわけではない変数に大仰しい名前を付けると却って可読性が悪くなるような。
「i, j, k といったら整数変数」のような古き良きお約束は、お約束が通じる状況でお約束を守っている分には理解の助けになるので、それ自体は現役のスタイルだと思う。
でも、変数名に意味が無い i とか j とかを文脈無視して使いまわすのは勘弁な!
Re:ループ変数 (スコア:1)
お約束が通じる状況でお約束を守っている分には
そうそう。ネストされているループの外側がjで、内側がiとかになってなければOKかな。
あと、「もったいないからループ処理のあとでもう1回だけフラグとして使うよ」なんてエコなことを
されていなければね。
Re: (スコア:0)
>「i, j, k といったら整数変数」のような古き良きお約束
同感。
なのだけど、グリフ的な問題として、iとjをミスタイプした挙句、ソースを眺めてもなかなか気づかなかった、
という経験はしたことありませんか?
いい解決案はないですかね。i の次は ii にするとか?
Re:ループ変数 (スコア:2)
自分は、スコープの長い変数には必ずdescriptiveな名前を与えるというルールで書いています。つまり、ループ変数でもループ自体が十分長ければ i ではなく意味のある名前を与えるということです。スコープが短く、一画面で見通せるくらいの長さならば i でもOKということにしてます。
Re:ループ変数 (スコア:1, 参考になる)
別の角度からの解決策として、
単語を検索したりハイライトしたりするのが得意なエディタ/IDEを使え、
ってのもあります。
たとえばvimなら「i」にカーソル合わせて「*」キーを叩けば、
「i」が黄色とかにハイライトされます。
むろん「j」はされません。
「*」で捕捉されるのは単語単位なので「ii」とかもハイライトされません。
ちょくちょく「*」で確認する癖をつけると、
変数名取り違えの事故がだいぶ減りました。
ていうか殆ど起こさなくなりました。
これはかなり劇的な効果があったなあと思っています。
Eclipse(のJava環境)でも、ある単語というか識別子にカーソルを合わせると、
同じ識別子が灰色っぽくなりますね。
便乗質問(ループ変数) (スコア:2)
ログ解析の時に便利なんですけど。
Re: (スコア:0)
Re: (スコア:0)
Re: (スコア:0)
でもあれ、一画面を超える範囲で使われてる名前のミススペルを探すには使いにくいんですよね。
あと、aVar に対して aVar_variant みたいな名前も柔軟に引っ掛けて欲しいときにちょっと困る。
Re:ループ変数 (スコア:2)
1. * または # で検索履歴に「\」を拾う。
2. / でキーワード検索に入り、Ctrl+P で「\」を呼び出す。
3. 後ろの「\>」を消して再検索する。
# ちょっと手順長いですかね?
# でも g* ではダメなんですよね?
名物に旨いものなし!
Re: (スコア:0)
基本的にマッチなので、マッチ「しない」ことを探すミススペル探しには、あまり向いてないと思います。
どちらかというと、期待する位置がハイライトされていないことを目視で見るという消極的なやりかたに…
あと方向性というか用途が違うけど、柔軟ひっかけのために、
ctagsのようなタグジャンプデータベース(?)作成ツールを「カスタマイズ」するという手もあります。
特に最近のLinux DistroとかではデフォになってるExuberant ctagsだと、(Windows版もありますね)
正規表現を使ったそれなりに凝ったタグジャンプ検出ルールを比較的楽に自作設定できるんで、
お勧めです。
よくありが
Re: (スコア:0)
よくわからないんですが、
vimの「*」は「\」というパターンを検索バッファに入れるだけなのだから、
「「\」を拾う」だけなら
単に「/を叩いて\を入力する」だけでいいんじゃないでしょうか?
Re:ループ変数 (スコア:2)
おっと失敬、化かしてしまいました。
> 1. * または # で検索履歴に「\」を拾う。
> 2. / でキーワード検索に入り、Ctrl+P で「\」を呼び出す。
履歴に取り込んで再利用するのは「¥<aVar>¥」です。
名物に旨いものなし!
Re:ループ変数 (スコア:1)
ミスタイプは長い名前の方が起きやすいんじゃないか?
(コピペonlyの人には関係ない話)
the.ACount
Re: (スコア:0)
Re: (スコア:0)
紛らわしい名前を避けたとしても、眼や脳の負荷が違うと思う
Re:ループ変数 (スコア:1)
# ちなみに、私の場合はiteratorでも単順に列挙して順次処理する意味しかない場合はi, j, kを良く使います。
Best regards, でぃーすけ
Re: (スコア:0)
見易さという意味では、長い変数名でなおかつ似たような名前が大量に出てくる状況と件のi,jのようなもののどっちがマシなのやら。
# SoCな組込みCPUのメモリマップドなペリフェラル用レジスタは名前が似ているのが多いから大変だぜい
Re:ループ変数 (スコア:1)
そこまで重要な変数にiとかjと言った名前をつけるのが問題かと。
Re:ループ変数 (スコア:1)
orz
Re:ループ変数 (スコア:1)
何万件もまわすアホみたいな処理のときに…
Re: (スコア:0)
# 公私含め自分だけしか組まないので、わがままOK。