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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Java

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

Q&A

解決済

2回答

25278閲覧

メソッドの記述順序について

chankane

総合スコア139

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Java

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

0グッド

2クリップ

投稿2018/08/04 00:47

前提・実現したいこと

メソッドの記述順番についてふと気になったので,皆様に質問いたします.

私の場合
C → Java
と移行してきた人間なので,

C

1void a(){ 2 // Do Something... 3} 4 5void b(){ 6 a(); 7 // Do something... 8}

といったように,先に使われる関数を先に定義するクセがついております.

しかし,Javaの場合,メソッドの記述順序に制約がないので,ふとした時にメソッドの記述順序に悩んでしまいます.(どう書くのが読みやすい親切なコードなんだろう)

  1. package
  2. import static
  3. import
  4. class
  5. public static final field
  6. private static final field
  7. ...

のような形式でご回答いただくけると,読みやすくて助かります.

皆様のご意見,お聞かせください.(理由がついているととても嬉しいです.)

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

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

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

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

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

guest

回答2

0

ベストアンサー

チームで作業しているならば、コーディング規約で決まってそうな気がしますが。

Ordering of class contents
The order you choose for the members and initializers of your class can have a great effect on learnability. However, there's no single correct recipe for how to do it; different classes may order their contents in different ways.

What is important is that each class uses some logical order, which its maintainer could explain if asked. For example, new methods are not just habitually added to the end of the class, as that would yield "chronological by date added" ordering, which is not a logical ordering.

論理的な順序を持つことが重要。


4.16 メンバー順序
以下の順で記述する

staticフィールド
staticイニシャライザー
staticメソッド
フィールド
イニシャライザー
コンストラクター
メソッド
同一カテゴリー内では以下の可視性の順で記述する

public
protected
パッケージprivate
private

投稿2018/08/04 01:14

umyu

総合スコア5846

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

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

chankane

2018/08/04 01:37

わたしの場合, staticフィールド staticイニシャライザー フィールド イニシャライザー staticメソッド コンストラクター メソッド の順で今まで記述しておりました. フィールドはフィールドでまとめるパターンですね(^^) なるほど static なものの定義は先に済ませておくぱたーーんですか ちなみにその考え方の理由(個人の意見でも結構です)をお伺いしたいのですが,ご教授願えますでしょうか?
chankane

2018/08/04 01:38

すみません.「ぱたーーん」ではなく「パターン」ですね. 誤字失礼いたしました.
umyu

2018/08/04 02:25

@chankaneさんへ コメント欄は右側に編集ボタンがあるので、追記せずとも修正できます。ご参考まで 個人的な考え方としてはそのクラスを使用している人がまず何をみるかですかねー。 static 変数(フィールド)、コンストラクタ、publicメソッド、ここらへんは見るけど、クラスの内部実装である、インスタンス変数はprivateメソッドは見るのはあとになるのではないでしょうか。 例えば、JavaDocのIntegerクラスなら以下のようにstaticフィールド、コンストラクタ、alphabet順にstaticメソッド、インスタンスメソッド)になっています。 https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html
chankane

2018/08/04 02:34

>コメント欄は右側に編集ボタンがあるので、追記せずとも修正できます。ご参考まで お恥ずかしい限りです(〃-〃)ポッ >個人的な考え方としてはそのクラスを使用している人がまず何をみるかですかねー。 static 変数(フィールド)、コンストラクタ、publicメソッド、ここらへんは見るけど、クラスの内部実装である、インスタンス変数はprivateメソッドは見るのはあとになるのではないでしょうか。 納得がいきます.たしかにここのページにお世話になるときのことを思い出せば,プライベートフィールドなんてしったこっちゃですものね. なんだかすきっりしました. ありがとうございますm(__)m
guest

0

public なものを先に書いて、private なものを後にする位で、それより細かい粒度は気にしないです。

クラスの概要、提供する機能を概観したい場合に public なメソッドが先に書いてあるとよいでしょう。
public メソッドが使われる順番はクラスを定義する側からは「知ったことではない」状態であるべきです

投稿2018/08/04 00:55

koko_u

総合スコア936

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

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

chankane

2018/08/04 01:07

ほほう.自分の書いたコード例とは逆ですね. >クラスの概要、提供する機能を概観したい場合に public なメソッドが先に書いてあるとよいでしょう。 public なメソッドは直接提供する機能なので(=優先度が高い)スクロールしないと見えない後側ではなく先に記述するべき. という解釈でよろしいですか? また, >public メソッドが使われる順番はクラスを定義する側からは「知ったことではない」状態であるべきです すみません,ここをもう少しだけ具体的にお願いします (m´・ω・`)m
koko_u

2018/08/04 01:19

public なメソッドは他のクラスから自由に好きな順序で呼び出し可能であるべき、という意味です。
chankane

2018/08/04 01:29

なるほど,その点は考えたことがなかったです.たしかに public な a を実行してからでないと public な b が実行できないとなると不便ですし,ほかの方にも迷惑をかけますよね(´・ω・`)...勉強になりました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問