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

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

新規登録して質問してみよう
ただいま回答率
85.42%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

意見交換

クローズ

10回答

1842閲覧

クラスの public function について、public を省略しますか?しませんか?

origa3

総合スコア22

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2023/05/18 04:21

0

2

テーマ、知りたいこと

アンケートみたいな感じです。

PHPやPythonではデフォルトで public なので省略できますが、JavaやC#では省略できませんよね?

では、みなさんどちらがお好みですか?
また、どちらのルールが多かったですか?

  1. 省略可能な言語では常に省略する
  2. 常に記述する

背景、状況

自分の趣味開発でどうしようか悩んでいるために生じた疑問です。

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

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

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

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

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

回答10

#1

yambejp

総合スコア115446

投稿2023/05/18 04:54

あくまで個人環境として、PHPですが、可能な限り書くようにしています。
ただ質問板などの回答する場合などはなるべく簡素化した方が見やすくなるので、あえて書かないこともあります
PHPの公式マニュアルのサンプルもコンストラクタ(デコンストラクタ)などはpublicをつけたりつけなかったり統一されていませんね。

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

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

#2

退会済みユーザー

退会済みユーザー

総合スコア0

投稿2023/05/18 04:56

省略しないのが常識。議論する対象じゃない。
一般的なコーディング規約で決まっている。

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

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

#3

maisumakun

総合スコア145484

投稿2023/05/18 05:06

編集2023/05/18 05:11

補足にはなりますが、JavaScriptなど「そもそもpublicと書くことができない(#で始めたものがprivate扱いとなる)」言語もあります。

また、C++ではpublicprivateはメソッドに対して付けるのではなく、これから宣言されるメソッドの性質を設定するモード切替となっています。

Rubyではpublicprivate自体もメソッドなので、動的に設定することすら可能です。

…というように、言語が違えば文法や機能性が異なる分野ですので、言語を決めずに一般論を募ること自体が有意でないと感じました。

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

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

#4

fana

総合スコア11746

投稿2023/05/18 09:29

(C++とC#くらいしか知らない者ですが)

  • C++ で struct のメンバが全て public な存在である場合にはわざわざ public って明示的に書かない.
  • 他は書く.

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

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

#5

m.ts10806

総合スコア80873

投稿2023/05/18 09:38

型などと同じく明示します。(型宣言必要がない言語でも、機能がある限りは明示します)
結局はプロジェクトなどのルール次第でしょうけど、自分が書いたコードでさえ時間が経てば他人のコードのようなものなので、書いておくことで得られる恩恵の方が大きいです。

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

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

#6

退会済みユーザー

退会済みユーザー

総合スコア0

投稿2023/05/18 10:15

もちろん「2. 常に記述する」です。自分的には異論は認めないというレベルの話です。

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

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

#7

episteme

総合スコア16614

投稿2023/05/18 11:56

省略するメリットがよほど大きくないかぎり明記します。(publicに限らず)

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

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

#8

m-yatsu

総合スコア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

以上から,アクセス修飾子を省略可能な場合はあれども,それによって規定されるアクセスレベルは言語によってしばしば異なるので,できる限り明示的にする戦略を取った方が良いかなと思う次第です.

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

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

#9

maisumakun

総合スコア145484

投稿2023/05/23 09:19

#8

逆に、Javaでpackage privateを明示する文法がないのも悩みの種です。

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

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

#10

Zuishin

総合スコア28662

投稿2023/05/23 23:55

C# では最近までインターフェースのメソッドにはアクセス修飾子をつけることができず、全て public でした。

それぞれの言語やプロジェクトでルールがあるはずなので、それに従うのが良いと思います。
個人的なこだわりの強いソースは読みにくくなり、指摘もされやすくなるため、一律にどうこういう個人的な決まりは作らない方が心の平和が保てると思います。

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

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

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

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

質問する

関連した質問