- PR -

変数名をつける時に何を気をつけますか?

投稿者投稿内容
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2009-01-20 17:07
引用:

flatlineさんの書き込み (2009-01-20 15:46) より:

引用:

・ローカル変数と区別する目的で、private なフィールドの先頭に _ (アンダースコア)をつける



これも、よく見かけますが、個人的にはあまり好きではありません。
アンダースコアは見づらいし、入力しづらいので。
そもそも、ローカル変数とprivate 変数を、区別しなければならないはめにあまり
陥ったことがないですが、そんなにありますかね?



例えば ID と Name というプロパティを持つ User というクラスを、私ならこう書きます(C# の場合)
コード:

public class User
{
private int _id;
private string _name;

public int ID
{
get
{
return _id;
}
}

public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}

public User(int id, string name)
{
_id = id;
_name = name;
}
}



[ メッセージ編集済み 編集者: rain 編集日時 2009-01-20 17:08 ]
flatline
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 102
投稿日時: 2009-01-20 17:45
引用:

例えば ID と Name というプロパティを持つ User というクラスを、私ならこう書きます(C# の場合)



私なら、こうですね(Javaです)。
コード:
private int id;
private String name;
  :
  :
public user(int id, string name) {
  this.id = id;
  this.name = name;
}



または、
コード:
private int id;
private String name;
  :
  :
public user(int aId, string aName) {
  id = aId;
  name = aName;
}



後者の方が多いです。


じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2009-01-20 18:08
引用:

flatlineさんの書き込み (2009-01-20 15:46) より:

これも、よく見かけますが、個人的にはあまり好きではありません。
アンダースコアは見づらいし、入力しづらいので。
そもそも、ローカル変数とprivate 変数を、区別しなければならないはめにあまり
陥ったことがないですが、そんなにありますかね?


いわゆる 「プロパティ変数 (プロパティの実態となるフィールド)」 で、『直接参照するな。プロパティからアクセスせよ。』 という意味合いで付けることが多いです。 通常のプライベート フィールドでは使いません。 これは .NET の分野では良く見かける使い分けです。

スレッドの本題についてですが、前提として "プロジェクトなどで名称ルールが存在しないこと" とありますので、この場合は Web 上などにある既存のガイドラインなどになるべく従うようにするのが無難だと思います。明記されていないところは、既存の BCL を参考にしてみたりすることも多いですが、BCL 自体もたまに 'ゆらぎ' があって判断に困ることもあります (ゆらぎどころか、自社のガイドライン違反しているようなものもチラホラとw)。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
武史
ベテラン
会議室デビュー日: 2007/09/21
投稿数: 71
投稿日時: 2009-01-20 19:47
引用:

・あとから自分がみて見やすいもの。

これは、重視しますが、

引用:

・ルールが統一されているもの。

これは重視しません。

昔の、チョンプロとかいじって、変数名汚いなぁとか思っても、
ルールの統一を重んじて古いルールのままにしたり、
新しいのにそろえたりとか、考えるといらいらしてしまうので、
その時々の、流行を使うようにしています。

変数名も後から簡単に変えられるようになったのと、
Using で使用範囲と目的が比較的明らかになりやすくなったので、
昔より短い変数名を多用するようになりました。

stream だったら、とりあえず、"s" なんても使用範囲が短い場合は、
ありがちです。( using の中が、1〜2行とか )

やだなぁと思ったら、後で簡単に変えられますからね。
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2009-01-20 21:47
引用:
※プロジェクトなどで名称ルールが存在しないことを前提としています。


この前提がありえません。
(なんていったら元も子もないですが)

チーム開発においてルールが存在しない場合、
 「にゃーさんが書いたソースだからPr○○はprivateだな」
 「Heが書いた関数だからstr△△はstringだな」
なんて感じに開発しないといけなくなります。最悪です。そんなのイヤです。

自分一人でコーディング(と保守)するのであれば好きにすればいいと思いますが、
それでも既存のライブラリとあわせた方が何かと楽でしょう。
 「標準のライブラリだからI○○はインターフェイスだ」
 「俺が書いた関数だからstr△△はstringを返すな」
なんてのはやっぱりイヤです。

そういう意味で、privateなメンバの名前には割と寛容です。
勝手な名前つけても影響範囲が小さくてあんまり困らないから。
じゃんぬねっとさんが挙げているガイドラインでもprivateなメンバには触れられていなかったかと。

自分の場合、完全に使い捨てにするつもりのスクリプトなんかではaとかbとか平気で出てきます。誰にも迷惑かけないから。

チーム開発は、ミンナのためのコーディングが大切だとおもいます。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2009-01-20 23:11
引用:

Heさんの書き込み (2009-01-20 21:47) より:
引用:
※プロジェクトなどで名称ルールが存在しないことを前提としています。


この前提がありえません。
(なんていったら元も子もないですが)


理想論ですかね・・・。結構そういうプロジェクトがありますよ。
大規模なら破綻コースですけど、2〜3人のプロジェクトとかだとザラにあります。

ところで、自分はJavaな人なのでJLSベースです。
どっちみちJavaのような静的言語で賢いIDEがあれば、名前なんでどうでもいいのレベルです。
IDEで命名規約に合致しているかのチェックもできるので、それでルールを強制することはあります。

困るのはJavaScriptですね。1つの画面のスクリプトを複数人でメンテしていると、
同じ名前の関数が追加されて動かなくなったりするトラブルも過去にありました。
規約より今のコード見て名前を付けろよと思いますね。
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2009-01-21 00:03
引用:
かつのりさんの書き込み (2009-01-20 23:11) より:
理想論ですかね・・・。結構そういうプロジェクトがありますよ。
大規模なら破綻コースですけど、2〜3人のプロジェクトとかだとザラにあります。


私の周りでもザラですが、
この手の規約なんてのは毎回頭捻って作らなければ行けない訳でもないわけで、
JavaとかC#とかのメジャーな言語であれば一度作れば(作らなくてもどっかから拾ってくれば)いくらでも使い回しが効くのになぁ、とは思います。最初に周知すればいいだけなのに。
# と、かつのりさんに言っているわけではないです。悪しからず。

周りに合わせろってのは私もよく言います。一部のコードだけがガイドラインに沿っていても意味がないのです。
ミンナがハンガリアンなら自分もハンガリアンになります。
にゃー
常連さん
会議室デビュー日: 2008/06/26
投稿数: 32
投稿日時: 2009-01-24 16:49
一人で完結するコーディングや既存の修正は行ってきましたが、
業務で新規に作ることがほとんどなかったため、
とても皆さんの意見が参考となりました。

特に、オブジェクト指向であれば
皆で意識的に共有するクラスでなければ、
他へ影響を及ぼすことというのは減っていると思います。
そのため、プライベートの変数は気にせず、その時の流行の変数という
考え方というのは、かなり新鮮に思いましたが納得するものでもあります。

# 自身で作るものも、処理はほとんど1画面で完結するように作っていますし

示してくださっているガイドラインを読む時間が今のところとれないので、
後ほどみさせてもらおうと思っています。

スキルアップ/キャリアアップ(JOB@IT)