私は常に変数名の省略に苦労しています。変数名を短縮するための標準はありますか?
私は常に変数名の省略に苦労しています。変数名を短縮するための標準はありますか?
回答:
私が使用する標準は、省略形が完全なバージョンよりも読みやすい場合を除いて、変数名を省略しないことです(i
たとえば、反復インデックスなど)。コミュニケーションできるように名前を付けます。変数名を短縮すると、通常、通信する能力が低下します。
私はC#プログラマではないので、C#の規則についてはあまりアドバイスできません。しかし、私は略語についていくつかの考えを持っています。
年を取り、経験を重ねるにつれて、自分自身の省略形がどんどん少なくなっていることに気づきました。私がプログラミングを始めたとき、私はあまりタイピストではなかったことを認めます。それ以来、私はその点で良くなっています;)。スコープが非常に限定されている変数は自由に省略できるので、1つの画面ですべてのライフタイムを確認できます。しかし、それ以外は、回避できる場合は避けたいと思っています。タイピングを節約することを決して省略しません。
私はまだ私の行を80文字以下に保つようにしています。それが最近意味があるかどうかはわかりませんが、古い習慣です。したがって、変数名が非常に長くなる場合は省略します。しかし、その前に、同じように明確な、より簡潔な名前を見つけようとします。それ以外の場合は、すべて同じであるほど短くなります(拡張形式と言えば)。
短縮する場所が最も重要だと思います。特定のコードベースで、また関連するコードベース全体で、常に同じ方法で短縮することです。覚えるのが最も簡単なので、最初の本能が適切です。しかし、同じプロジェクトの他の人に確認する価値があるかもしれません。最近では、プログラマー以外の人でいっぱいのオープンオフィスで、他の1人のプログラマーと主に仕事をしています。関連する変数名を一貫して省略したり、関数呼び出しでパラメーターを一貫して順序付けしたりする方法など、詳細な議論を頻繁に行うため、彼らは私たちが狂っていると思います。しかし、2人でも名前は重要です。より大きなチームでは、それはさらに重要になります。私がかなり信心深いことの1つは、このようなものの不整合を見つけたらすぐに修正することです。
編集:ただし、いくつかの略語は良いと思います。現在の仕事では、記述したコードの多くは、特定のパラメーター値でのスプラインやその他のパラメトリック関数の評価に関係しています。私たちのコードベースは実際にはこの点で一貫性がありません。uが使用されている場所とparam(省略形自体)が使用されている場所があることは知っています。Uはこのドメインのパラメーターの一般的に理解されている略語なので、これを一貫して行う必要があります。u、param、parameterのいずれでも問題ありません。私たちはそれらを非常に多く使用しているので、1つだけを使用している限り、混乱が生じることはほとんどありません。しかし、私はuを好みます。
それよりも悪いですが、実際にはいくつかのタイプのパラメーターがあります。そして、私たちはそれらの一部に複数の名前があります。
これが矛盾した理由は教科書です。6つのパラメーター空間をマッピングする必要があることがわかりました-理由は複雑ですが、基本的に、パラメーター空間、正規化パラメーター空間、弧長空間、正規化弧長空間、区分的空間、および正規化に対応するパラメーターが必要でした区分的空間。最初は、これらすべてのスペース間を行き来する必要があることを理解していませんでした。そして、それらの空間内のポイントを説明するパラメーターの命名方法に一貫性がありませんでした。
これは時々起こります-あなたのアプリは成長し、あなたはそれを成長させている間あなたはいくつかの矛盾したことをします 重要なことは、乱雑になっていることを認識し、乱雑が他のすべてに感染し、瓦礫の山に巻き込まれる前にそれを修正することです。
double createBox(string tb, int cir, double pmj)
追加するには、単に思考
vry rsn w dn't bbrvt st mk sr th cd s rdbl nd mntnbl eg
int accountBalanceInSavings
->に短縮できます
int accBalInSaving
4つの単語のうち2つは短縮されます(account-> accおよびBalance-> Bal)が、他の2つは短縮されないことに注意してください。ここで適用されるルール-最初の2ワードを非表示にします。「7文字以上のワード」ではありません。27文字のものがあり、1つはなかったためです。
だから、それは「accBalInSav」である可能性があります/はずです、yuk yuk yuk .......
プログラマーが年を取り、より賢くなればなるほど、彼らはますます省略を減らします。私の年齢では、私たちはおそらく私たちの若者の罪を補おうとしています...
コードは1回だけ記述され(大抵は数回、その後1回)、何千回も読み込まれることに注意してください。
accBalInSaving
は、設計に問題があります-変数は、実際には暗黙的である必要のあるコンテキスト情報を多く持っています。Account
たとえば、それがクラスのプロパティである場合、その名前に「アカウント」を含める必要はありません。その場合、省略は、この問題を敷物の下で一掃するのに役立つ鎮痛剤にすぎません。
単一文字名についても同様の質問があります。ループ/例外で変数名に単一文字を使用するです。
私の答えは、今のところ、スコープが小さい場合は短くしておくことです。たとえば、短い関数のパラメーターは、短くてスペースが少ないほど読みやすくなります。クラス全体の変数は、非常にわかりやすいものにする必要があります。
Steve McConnellの古典的な本、Code Completeは、このようなものに最適です。
略語に関する公式または共通の規則があるとは思いません。通常、略語のシステムは、各個人および各個人プロジェクト内で作成されます。会社のソースコードスタイルポリシーには特定のルールが存在する可能性がありますが、それも会社ごとに異なります。
余談ですが、なぜ省略するのですか?その結果、略語の意味を理解できるのはあなただけです。変数には完全でわかりやすい名前を使用してください。それは自己文書化コードにつながります。
疑わしい場合は、綴ってください。
変数名のポイントは、コードの意味がより明確になるようにするためです。略語が非常に明白なものでない限り、可能な限り最小のものを使用することもできます。変数名と関数名は通常、コード内の人間の言語の唯一のビットであるため、人間の目がコードの関連部分を見つけるための「ランドマーク」として機能します(または、大規模なコードベースでは、grep
またはなどのツールack
)および手がかりとしても機能します理解のために。
次の人があなたのコードを読みに来たとき、彼らはそれをあなたに感謝します。その人は一年後にはあなたかもしれません。私は多くのコードを省略して後悔しているので、今はそれを避けようとしています。
省略してもかまいません...
...省略形が、プロジェクトで作業している人だけでなく、英語で話したり書かれたりする場合(多くの辞書は、定義する用語の横にこの種の情報を提供します)。
var extensible_markup_language_element; // don't do this
var xml_element; // better
var element; // possible if the name of the function or the documentation make it clear you're dealing with XML and not the periodic table
docs.toString(); // most people capable of reading code know docs == documentation
...略語が明確に単一の概念を参照しており、コードベースに精通していない誰かによって即座に認識される場合。それでも、コメントやドキュメントが役立ちます。
var auth = user.auth;
if (auth) // If the user is authenticated?
// If the user is authorised to do something?
// If the authentication function exists for that user group?
// If some setting called auth is turned on for that user?
// If the user is the author of the document in question?
// If the user has some authority?
var attrNames = retrieveAttrs();
if (attrNames) // hm, attrNames sounds like an array of strings - which will be boolean true even if empty - this if looks like a bug!
const MDF // author is writing an iOS app for ordering hand-carved artisanal fibreboard so anyone familiar with the problem domain knows this has plainly nothing to do with Microsoft Database Files. Though maybe the first time it comes up in the code the author should perhaps still put its full name
...変数名が単一のスコープまたは小さな関数にのみ存在し、ユーザーが名前から意味を引き出すことを期待していない場合は、単一の文字を使用します。そのような場合、i
そしてj
一般的です。
foreach $i (1..10) { say $announcement->[$i] }
...インターフェースを作成するとき(つまり、変数名ではないので、質問の範囲外です。変数名とそれらを設定するインターフェースが同じ語彙を頻繁に使用するためにのみ言及されます)、その場合、他のルールが適用される場合があります。
some_command --transaction-message "Done" # a bit wordy - keep, but ALSO allow for convenience:
some_command --msg "Done" # might be useful
some_command -m "Done" # if you can spare -m
...コードベースが同じプロジェクトで同じ概念を何度も参照する必要があり、省略形がそのプロジェクトのスタイルガイドで定義できる場合、およびあいまいでない場合。プロジェクトがスタイルガイドとして十分な大きさでない場合は、それに見合うだけの大きさではありません。
定義上、これは大規模なプロジェクトでのみ機能するため、これにはコード例を提供しませんが、次の項目も参照してください。
...複数の寄稿者と略語を義務付けるスタイルガイドを持つ確立されたプロジェクトに取り組んでいるとき。その場合は、スタイルガイドに従ってのみ省略してください。ただし、問題がないかどうかを確認し、コメントを付ける準備をしてください(「これは文字列としての属性名のリストです」など)。
タイプは「_t」で終わる必要があります。「_struct」の生の構造体定義
- https://metacpan.org/source/SHLOMIF/XML-LibXML-2.0117/HACKING.txt
最後に1つの考え:許容できないほど長い変数名(たとえば、totalAfterTaxInLocalCurrencyのような4つ以上のセマンティックユニットで構成されている)がまだある場合、コードが単一のスコープで多くのことを実行しようとしており、その関数をリファクタリングする必要があるという症状である可能性がありますまたは、変数は単一のオブジェクトでより論理的に管理される場合があります。
変数を短縮する理由は、大きな変数の入力をやめるためですが、同時に、短縮された変数は、最初に宣言またはインスタンス化された場所に戻るのではなく、保持する内容を理解できるように十分明示的にする必要があります。だから例えば:
int accountBalanceInSavings
->に短縮できます
int accBalInSaving
--->と省略しますが、
int accBal
変数を見ただけでは変数が何を保持しているのか理解できないので、間違いなく良い選択肢ではないでしょう。
accBalInSaving
ためにaccumulated Bal In Savings
あなたはものを短縮するためにものを短縮するべきではありません、あなた/他の人の便宜のためにそれを行うべきです私はそれをその単語の最初の3つの重要な文字に短縮します、例えば:
int damagePerSecond;
に短縮できます
int dmgPerSec;
または、できるだけ短くしたい場合は、
int dps;