0
1
テーマ、知りたいこと
アンケートみたいな感じです。
PHPやPythonではデフォルトで public なので省略できますが、JavaやC#では省略できませんよね?
では、みなさんどちらがお好みですか?
また、どちらのルールが多かったですか?
- 省略可能な言語では常に省略する
- 常に記述する
背景、状況
自分の趣味開発でどうしようか悩んでいるために生じた疑問です。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
回答10件
#1
総合スコア112760
投稿2023/05/18 04:54
あくまで個人環境として、PHPですが、可能な限り書くようにしています。
ただ質問板などの回答する場合などはなるべく簡素化した方が見やすくなるので、あえて書かないこともあります
PHPの公式マニュアルのサンプルもコンストラクタ(デコンストラクタ)などはpublicをつけたりつけなかったり統一されていませんね。
#2
総合スコア10309
投稿2023/05/18 04:56
省略しないのが常識。議論する対象じゃない。
一般的なコーディング規約で決まっている。
#3
総合スコア144192
投稿2023/05/18 05:06
編集2023/05/18 05:11補足にはなりますが、JavaScriptなど「そもそもpublic
と書くことができない(#
で始めたものがprivate
扱いとなる)」言語もあります。
また、C++ではpublic
やprivate
はメソッドに対して付けるのではなく、これから宣言されるメソッドの性質を設定するモード切替となっています。
Rubyではpublic
やprivate
自体もメソッドなので、動的に設定することすら可能です。
…というように、言語が違えば文法や機能性が異なる分野ですので、言語を決めずに一般論を募ること自体が有意でないと感じました。
#4
総合スコア11266
投稿2023/05/18 09:29
(C++とC#くらいしか知らない者ですが)
- C++ で
struct
のメンバが全てpublic
な存在である場合にはわざわざpublic
って明示的に書かない. - 他は書く.
#5
総合スコア80695
投稿2023/05/18 09:38
型などと同じく明示します。(型宣言必要がない言語でも、機能がある限りは明示します)
結局はプロジェクトなどのルール次第でしょうけど、自分が書いたコードでさえ時間が経てば他人のコードのようなものなので、書いておくことで得られる恩恵の方が大きいです。
#6

退会済みユーザー
総合スコア0
投稿2023/05/18 10:15
もちろん「2. 常に記述する」です。自分的には異論は認めないというレベルの話です。
#7
総合スコア16598
投稿2023/05/18 11:56
省略するメリットがよほど大きくないかぎり明記します。(publicに限らず)
#8
総合スコア9
投稿2023/05/23 08:42
編集2023/05/23 08:43Java については,明示的にアクセス修飾をしないことにより,アクセシビリティ(アクセス制御)は「package private」になると下記のドキュメントにはあります.
参考1:https://docs.oracle.com/cd/E57014_01/core/FMWGL/glossary.htm#sthref17
参考2:https://docs.oracle.com/javase/jp/12/security/java-security-overview1.html#GUID-65C96219-B2AB-4205-808E-5B41CB2AD694
一方,C# においては,アクセス修飾の対象ごとにデフォルトのアクセシビリティが定まっており,クラスの子メンバにおいてはそれが private 相当であり,むろん public に比べ制限されるようです.
参考:http://did2.blog64.fc2.com/blog-entry-208.html
以上から,アクセス修飾子を省略可能な場合はあれども,それによって規定されるアクセスレベルは言語によってしばしば異なるので,できる限り明示的にする戦略を取った方が良いかなと思う次第です.
#9
総合スコア144192
投稿2023/05/23 09:19
総合スコア9
投稿2023/05/23 08:42
編集2023/05/23 08:43
Java については,明示的にアクセス修飾をしないことにより,アクセシビリティ(アクセス制御)は「package private」になると下記のドキュメントにはあります.
参考1:https://docs.oracle.com/cd/E57014_01/core/FMWGL/glossary.htm#sthref17
参考2:https://docs.oracle.com/javase/jp/12/security/java-security-overview1.html#GUID-65C96219-B2AB-4205-808E-5B41CB2AD694
一方,C# においては,アクセス修飾の対象ごとにデフォルトのアクセシビリティが定まっており,クラスの子メンバにおいてはそれが private 相当であり,むろん public に比べ制限されるようです.
参考:http://did2.blog64.fc2.com/blog-entry-208.html
以上から,アクセス修飾子を省略可能な場合はあれども,それによって規定されるアクセスレベルは言語によってしばしば異なるので,できる限り明示的にする戦略を取った方が良いかなと思う次第です.
逆に、Javaでpackage private
を明示する文法がないのも悩みの種です。
#10
総合スコア28650
投稿2023/05/23 23:55
C# では最近までインターフェースのメソッドにはアクセス修飾子をつけることができず、全て public でした。
それぞれの言語やプロジェクトでルールがあるはずなので、それに従うのが良いと思います。
個人的なこだわりの強いソースは読みにくくなり、指摘もされやすくなるため、一律にどうこういう個人的な決まりは作らない方が心の平和が保てると思います。
同じタグがついた質問を見る
C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。
Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。
PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。
Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。