問題タブ [private-members]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
8455 参照

iphone - プライベートメンバー変数の宣言

私は数週間前にObjective-Cを学び始めましたが、クラスのカプセル化を正しく管理する方法をまだ理解していません。クラスでプライベートメンバー変数を宣言する最良の方法は何ですか?

インターフェイスで「@private」と宣言するだけでなく、「@property」を使用してメンバー変数に適切なゲッター/セッターを設定するのが正しい方法のようです。しかし、これでも他のクラスがこれらの変数にアクセスできるようになっているように思われます。プロパティを「読み取り専用」と宣言した場合でも、外部クラスはメンバー変数への参照にアクセスして変更できます。

したがって、プライベートメンバー変数を宣言する最良の方法は、プロパティを宣言しないことによってゲッター/セッターを含めないことだと思います。私は正しいですか?それとももっと良い方法はありますか?

ありがとう

0 投票する
1 に答える
387 参照

c# - 他の非静的プライベート配列フィールドを初期化するために静的プライベート配列が必要なのはなぜですか?

.NET 4.0のクラスの内部を見るStack<T>と、コンストラクター内で実際の「配列」プライベートフィールドを初期化するために使用される「emptyArray」プライベート静的フィールドがあることがわかります。

入れてみませんthis.array = new T[0];か?また、サイズフィールドとバージョンフィールドに初期化ストロークが配置されている理由もあります。これらの行を省略すると、とにかくデフォルト値(0)に初期化されます。

0 投票する
3 に答える
237 参照

.net - リフレクションを使用して実装を変更する

私の上司は自分自身をオブジェクト指向の達人と見なしていますが、私は彼を趣味のプログラマーと見なしています。彼は私たちのSage開発を担当し、クライアントのSageインストールにカスタム要件を追加します。彼は最近、リフレクションに非常に興奮しています。彼は、コード内のSageのアセンブリをリフレクションし、プライベートメンバーとイベントハンドラーを変更しています。これは良い考えではないと思いましたが、彼はセージがそれができるのは素晴らしいと思ったと言って私を撃墜しました。これは非効率的であり、実装を変更するとコードが崩壊する可能性があるため、これは悪い習慣だと思いました。私は通常、開発者が理由で何かをプライベートにしたということですか?

これに関する一般的なルールは何ですか?

これがばかげた質問のように思われる場合は、多くの感謝と謝罪。

ポール

0 投票する
2 に答える
10377 参照

php - PHP: クラス内からプライベート メソッドを呼び出すと、ひどく死にます

したがって、これは少し複雑に聞こえるかもしれません。指が交差しました 私ははっきりと出くわします。

PHP の MVC フレームワークで作業しています。

ヘルパーを呼び出すコントローラー /report/index をロードします

ヘルパーの内部

私はそれを次のように実行します^これはすべて順調です。残念ながら、次のように実行したいと思います。

残念ながら...他の場所から呼び出したクラス内からプライベート関数を呼び出そうとすると...(うわー、それは一口です)...すべてが死にます。非常にひどく死ぬので、エラーも発生しません。

ある種の信じられないほど厄介な構文の問題を抱えていることは明らかです...しかし、クラス内からプライベート関数に正しくアクセスするにはどうすればよいですか?

次のようなものかもしれません: self::do_stuff();

プライベート クラス変数の宣言とアクセスについてはどうでしょうか。

どんな助けでも大歓迎です。

0 投票する
4 に答える
11971 参照

c++ - クラスのプライベート変数への参照を渡すC++-コンパイラの問題?

クラス内のプライベート変数の参照による受け渡しは、そのクラスの外部で直接変更することができますか?それとも、これはコンパイラーが「拾い上げて防ぐべき」ものですか?

例:

出力:

所有者クラスにプライベートであるが、必要に応じて他の人が変更できる、他の/異なるオブジェクトを使用して、このようなことを行う必要があります。私が最後に望んでいるのは、この種の練習が戻ってきて、将来私をバイトすることです。

私が本質的に心配しているのは、クラス/構造体を基本的にバッファーへのポインターとして表示し、メンバーのアドレスをこのバッファーへのオフセットとして表示したいので、メンバーのポインター値を渡してもそれが属するクラス/構造体のベースポインタなしでは役に立たない。これは私が本能的にそうあるべきだと感じていることであり、上記の例は不可能であるはずです。

0 投票する
3 に答える
1983 参照

c++ - GCC が、グローバル テンプレート関数からプライベート ネストされたテンプレート クラス/構造体を表示できるようにするのはなぜですか?

print_private_template次のコードで、コンパイラが不平を言っている間に関数を作成できる理由がわかりませんprint_private_class

これは予想される動作ですか?コンパイラのバグ/拡張機能?

明確にするために、私の目標は、 と の両方の使用でコンパイラ エラーを発生させることです 。print_private_templateprint_private_class

0 投票する
1 に答える
1540 参照

c++ - 初級 C++ アクセサー/ゲッターを使用してプライベート メンバー変数 (2D 配列) からデータを取得する

約 2 か月の C++ の経験 (他にバックグラウンドなし) を持ったまったくの初心者なので、気楽にやってください。

プログラミングの課題で戦艦ゲームを書いています。ゲーム グリッドは 15X20 で、グリッドを class のプライベート メンバー変数として使用しようとしていますplayer

私の質問は:

クラスplayerにプライベート メンバー変数がある場合:

アクセサ関数が次のように定義されている理由はありますか?

うまくいきませんか?

それは私の頭をやっています。私が得ているエラーは次のとおりです。

c2065: 'playgrid' 宣言されていない識別子

return playgrid[val1][val2]アクセサー定義内の行を指します。

これを理解しようとしている間、ゲッターを使用して他のプライベートメンバー変数から値を取得することに成功したため、オブジェクトが作成された後、他のすべてがオブジェクト内で適切に機能しています。私は間違いなく、スペルを間違えたり、大文字を誤用したりしていません。私のコンストラクタでは、playgrid は次のように初期化されます。

何を与える?

0 投票する
2 に答える
140 参照

unit-testing - プライベート メソッドの知識を使用してテスト ケースを選択するときに、プライベート メソッドを明示的に単体テストしていますか?

テスト コミュニティの一般的なコンセンサスは、private メソッドをテストしないことのようです。代わりに、それらを呼び出すパブリック メソッドをテストして、プライベート メソッドをテストする必要があります。しかし、何かが私には正しくありません。たとえば、次の方法を考えてみましょう。

この特定の関数は、私のクラスのいくつかの場所で使用されています。この関数のステートメントの両方のブランチをテストしたいと思いifます。つまり、パブリック関数ごとに、これら 2 つの状況に加えて、パブリック メソッド自体が行うすべてのことをテストする必要があります。

これは私にとって奇妙に感じるものです。getName()特定の特定の条件が満たされたときに が例外をスローするかどうかをテストしている場合、それはプライベート メソッドの実装の詳細を知る必要があることを意味します。それを知る必要がある場合は、クラスを拡張し、メソッドをパブリックにして、そのようにテストしないのはなぜですか?

(ところで、なぜこのような奇妙なメソッドが存在するのか疑問に思っているなら、これは、このクラスのテンプレートファイルが保存されているディレクトリを自動的に把握するために使用されます)。

0 投票する
4 に答える
6731 参照

c++ - 同じクラスのオブジェクトのプライベート要素にアクセスする

これは合法ですか?そうでない場合、次のコードはこれを許可しますか?

0 投票する
2 に答える
2938 参照

python - ゲッター/セッターがある場合のプライベート変数へのアクセス

Pythonでのプログラミングの正しい方法について質問があります...多分いくつかの異なる意見があるかもしれませんが、ここにそれがあります:

いくつかのプライベート属性を持つクラスがあり、2つのゲッター/セッターを実装したとしましょう(オーバーロード__getattr____setattr__はなく、より「Java-tistic」スタイルで):

次に、同じクラスの別のメソッドで、その「__private1」の値を再設定する必要がある数行を考えてみましょう。同じクラスなので、プライベート属性self.__private1に直接アクセスできます。

私の質問は:私は使用する必要があります:

または、次のように直接アクセスする必要があります。

私が新しい値を設定しているので、その値( "privateBlaBlaBla")が正しい( "private"で始まるstr())ことがわかっているので、システムに一貫性がなくなることはありません。一方、別のプログラマーが私のコードを取得し、self .__ private1属性の機能を変更する必要がある場合、彼はすべてのコードを調べて、__private1の値が別の場所で手動で設定されているかどうかを確認する必要があります。

私の推測では、常にsetPrivate1メソッドを使用し、get / setの__private1変数に直接アクセスするだけですが、経験豊富なPythonプログラマーの意見を知りたいと思います。