teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

余談を追加

2022/07/09 16:56

投稿

smoon
smoon

スコア193

answer CHANGED
@@ -92,4 +92,11 @@
92
92
  `attr_accessor`は外部からの参照や設定ができるので、セキュリティ的に好ましくありません。
93
93
  不要な場面で呼び出してしまう可能性もありバグにつながります。`@`を使えば外から直接読み書きされる心配がないのでセキュリティ上のメリットが多いです。
94
94
 
95
- 基本は`@`使用して初期化時に値を設定できるようにし、必要なものだけ`attr_accessor`の併用で外部に露出させましょう
95
+ 基本は`@`使用して初期化時に値を設定できるようにし、必要なものだけ`attr_accessor`の併用で外部に露出させましょう
96
+
97
+ ## 余談
98
+ `attr_accessor`の仕組みですが、自動で`getter`メソッドと`setter`メソッドを定義しているだけです。
99
+ `attr_accessor`を使わなくても手動で`getter`メソッドと`setter`メソッドをclass内に定義すれば、
100
+ `attr_accessor`が適応されているのと同じ状態にすることが可能です。
101
+ また、読み取り専用や書き取り専用の`attr_accessor`の親戚もいます。
102
+ 興味があれば調べてみてください。