質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
変数

変数は、プログラミングにおいて値や文字列などのデータを保持できる仕組みを指します。自由に名前を付けることができるため、管理しやすくなるのが特徴です。プログラムで変数の宣言を行い、値を代入して利用。保持したデータが通用する範囲でローカル変数とグローバル変数に分けられます。

アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

意見交換

クローズ

2回答

348閲覧

static 変数で SLAP を壊すのが納得できない

NovisWetCoder

総合スコア0

変数

変数は、プログラミングにおいて値や文字列などのデータを保持できる仕組みを指します。自由に名前を付けることができるため、管理しやすくなるのが特徴です。プログラムで変数の宣言を行い、値を代入して利用。保持したデータが通用する範囲でローカル変数とグローバル変数に分けられます。

アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

0グッド

1クリップ

投稿2023/10/15 01:08

0

1

SLAPとは(前提共有)

Single Level of Abstraction Principle の略。同一スコープでの抽象レベルはなるべく統一しよう、という原則(間違ってたらすみません)。

static 変数で SLAP を壊すのが納得できない

static 変数はクラスのインスタンスではなく、クラス自体に紐づきます。よって static 変数は他の変数やメソッドよりも一段高い抽象レベルにあります。それなのにクラスの記述中に宣言されるのが気持ち悪く、納得できません。

具体例

「生徒 class」と「学校 class」があり、学校は生徒全員の list を知りたいとします。

このとき「生徒 class」に static で student_list 変数を宣言してよいのか、はたまた「学校 class」の中で student_list 変数を宣言すべきでしょうか。

この学校以外の生徒も存在し得ることだし、抽象レベルという観点でも学校クラスで宣言すべきだと思います。ただし、もし世界に他の学校が無いと知っていたなら、static 変数の方が超単純で超便利です。でも SLAP は壊れます。そもそも学校を singleton にしちゃえば同じじゃない?とも思います。

static 変数はどう割り切って使うべきでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答2

#1

退会済みユーザー

退会済みユーザー

総合スコア0

投稿2023/10/16 06:33

現時点で他の学校がないとしても、これから生まれる可能性もある。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#2

ikedas

総合スコア4335

投稿2023/10/17 09:18

前提が間違っていると思います。

SLAPの説明は、検索すればいくらでも見つかります。たとえばPrinciples Wikiの「SLA」の項目

しかし、質問者さんの述べるような説明はみつかりません。そのため、それに基づいた「static 変数の抽象レベル」なる概念や、それに関して提示された具体例も、意味をなすものとは言えません。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問