チーム内で競合するJavaスタイル


12

私は6週間の期限があるJava開発チームの一員です。そのため、大量のコードを非常に迅速に作成する必要があります。ただし、開発チームにはさまざまなスタイルのコーディングがあります。名前の規則から抽象化の方法まで、すべてがチームによって異なります。Javaの「標準」を規定するドキュメントを知っている人はいますか?

明確にするために、たとえば変数や関数の適切な命名規則を規定する組織があるかどうか疑問に思っていました。このような短い期限では、お互いのコードを理解しようとする時間を費やすことができないため、これは最重要事項です。

回答:


18

そのような組織があります:Sun / Oracle自体。このドキュメントは、Javaプログラミング言語のコード規約と呼ばれ、必要な規約のほとんどを説明しています。誰もがそれを読んでその推奨事項に従うことに同意してください。


3
これはよく知られた標準ですが、チームが同意する場合はそれを逸脱することを恐れないでください。たとえば、幅を80文字に制限するのは苦痛です。
マルタインVerburg

1
@MartijnVerburgは、深いインデントを回避するために、メソッドおよびクラスへのリファクタリングを促すことができます。

これは慣習であり、独自の合意を見つけることができない場合、合理的なフォールバックかもしれませんが、名前が示すように、それは命令しません-それは慣習です。
ユーザー不明

@userunknownそのとおりです。私はすべての規約にも同意しません。しかし、OPの時間枠を考えると、これは適切な妥協案です。
アンドレスF.

8

私は本当にAndresの答えに注目し、Javaコードを均一にフォーマットする側面に焦点を当てています。

Eclipseを使用している場合は、Javaフォーマッターを設定して、Java標準に自動的にフォーマットすることができます。Eclipseフォーマッターには、1行あたりの文字数(新しい行に分割されるまでの1行あたりの文字数など)など、その他の便利な設定もあります。行あたりの文字数を標準化することが容易にそれを作る差分だけ間隔と改行からの違いの多くを持つことなく、異なる開発者によって書かれたコード。

最後に、Eclipseを使用して、必要なすべての設定を行った後、チームのすべてのメンバーがインポートできるファイルとしてフォーマッターをエクスポートします。したがって、Eclipseを使用している場合は、自動フォーマットおよびコード編集を行うすべてのオプションを完全に検討し、チーム全体で設定を共有することを強くお勧めします。

他の主要なJava IDE(IntelliJおよびNetbeans)には、フォーマット設定をエクスポートするための同様の機能があると思います。


2
+1良い答えも!また、Checkstyleのようなプラグインをインストールして、規則に違反したときに警告するようにすることもできます。
アンドレスF.

これも行います。設定-> Java->エディタ->オプションを保存し、保存時にフォーマットを有効にします。主な理由は、バージョン管理履歴を可能な限りクリーンにするために、フォーマットの影響を受けるソース行ができるだけ早く発生することを保証することです(再度)。

はい、最近これも始めました。わからないことは、保存オプションで「未使用のプライベート変数を削除する」を選択したことだけです。そのため、TDDを実行しているときに、使用する前にコードが保存されたために変数が頻繁に表示されなくなることがわかりました...しかし、このオプションは素晴らしいものでした。
サムゴールドバーグ

6

この[異なるコーディングスタイル]は非常に重要です。このような短い期限では、互いのコードを理解しようとする時間を費やすことができません。

実際に。最重要ではありません。

コンサルタントとしての30年後、私は多くの顧客から多くのコードを読みました。すべての顧客(および多くの場合、顧客の組織内)にはさまざまなスタイルがあることに注意することが重要です。

非常に多くのスタイルを読んだ後、私はこれを学びました。

スタイルは関係ありません

常に機能するコードの作成と、常に機能することを証明する単体テストの作成に焦点を当ててください。

動作するコードを出荷した後、修正するバグやインストールする機能強化がなくなった場合は、それをドレスアップできます。


多分それは問題ではありませんが、それは持っていることもとても素敵で、とても簡単です。
ケビン

1
スタイルは重要ではありませんが、一貫性は重要です。一貫性のないスタイルは、ソフトウェアのメンテナンスをはるかに困難にします。
ジェスパー

5
@Jesper:「一貫性のないスタイルは、ソフトウェアのメンテナンスを「少し難しく」します。伸びてもそれほど難しくありません。不透明で、悪い、バグのあるコードは、維持するのがはるかに困難です。作業コード内の一貫性のないスタイルは、一貫性のないスタイルです。一部の人々はアクセントがあり、あなたはより注意深く聞く必要があります。一貫性のないスタイルは、異なる地域(または国)のアクセントにすぎません。
S.Lott

1
グローバルな意味ではスタイルは重要ではありませんが、単一のチーム内で一貫したスタイル重要です。プロジェクトを作ったり壊したりすることはありませんが、一貫性を持たせることとそうでないことを同じように簡単に行えるのであれば、先に進んで一貫性を保ってください。あなたのコードは少なくともわずかに良くなります。
ブライアンオークリー

1
「あなたのコードは最高」「わずかに改善」します。そして、はい、それはほとんどゼロコストであり、確かにゼロリスクです。だが。100%のテストカバレッジは、一貫性よりもはるかに重要です。
-S.Lott

2

完璧な普遍的な標準を選ぶことを心配しないでください。必要なのはチームが1つの標準に同意してそれに従うことだけです。必要に応じて独自に構成しますが、一貫性を保ちます。

一貫性はコラボレーションを改善し、コラボレーションはコードを改善します。

実際の一貫性が役に立たない場合でも、チームが協力て合意に達したという事実は良いことです。コーディング規約のような単純なものに同意できないことは、表面に潜む大きなチームワークの問題があるかもしれないと言っています。


0

上記のSun Java CCは13年前のものであり、一部のルールは古くなっています(1行に80文字など)だけでなく、最も一般的なもの(クラスのキャメルケース、ブロック大文字)を除いて、命名規則を定義していません静的な最終変数など)。

使用するDAO、EJB、エンティティなど、さまざまなタイプのクラスに対して独自の標準を定義する必要があります。Sun Java CCは、拡張用の抽象基本クラスのようなものです:)


SunのJava CCは少し古いことに同意しますが、これは単なる出発点を意味するものです。私は、OPが独自のCCを定義するのに無駄な時間をあまり持っていないと思います。(ところで、私が現在働いているところでは、80文字の制限を強制するように構成されたSonarプラグインを使用しています。そのため、このルールはまだ有効であり、一部のショップでは有効です)。
アンドレスF.

他の理由に加えて、読みやすさが要因です。ラインを横切って長い距離をスキャンする必要があるのは、下にスキャンするよりもはるかに効率が悪いです。適切にフォーマットされたコードを使用すると、無関係なコードをすばやくスキャンできます。
BillThor

1行あたり80文字という問題が発生した場合、驚くほど長い識別子を持っているか、1行に多くの文字を読みにくくしてしまいます。前者は馬鹿げています(要点をそれよりも小さくすることはできませんか?)、後者はリファクタリングの緊急の必要性を示しています。保存時の自動フォーマットはすばらしいので、フォーマットについて心配する必要はもうありません。ソフトウェアがそれを処理します。
ドナルドフェローズ

@DonalFellowsはい、この日と年齢では、小さな端末画面のためではなく、リファクタリングすることを思い出させるために80文字の制限があります。
アンドレスF.

0

ここで他の人が述べたように、Javaの数少ない人気の「スタイルガイド」の1つをオンラインで検索し、チームの全員にそれらに固執するように説得できます。お気に入りのIDEの一部のコードチェックツールは、そうしていないときに思い出させるのに役立ちます。

しかし、時には政治が関係します。かつて、誰かが標準化の必要性に言及した後でも、チームの最も上級の開発者が自分のやり方でそれを続けている状況にいます。そのような状況では、おそらく彼はコードベースと要件について最も多くの知識を持っているので、彼のコードスタイルを観察し、彼に従うことをお勧めします。それは私たちの残りがその特定の状況でやったことであり、私はしぶしぶ従います。

そのため、あなたの状況も考慮することが重要です。


これはどこの国ですか?文化的なもののように聞こえます。

@ThorbjørnRavnAndersen彼は、「長い間仕事をしてきた」ときに、人々は変化に抵抗することができると言っています。この意味での政治とは、単なる「オフィスの政治」です
-Robotnik

0

ボブおじさんは、彼の本「Clean Code」で、より現代的で最新のコーディングスタイルを示しています。残念ながら、アイテムのリストは含まれていません。あなたはそれを読む必要があります。彼は、自分の規約を見るには、自分のコードを読む必要があると自分に言います。ボブおじさんは間違いなく一種の機関です。この本はとにかく優れた読書なので、今すぐ読むのが遅すぎても、できるだけ早く読んでください。


0

コードで本当に重要なのは、低い循環的複雑度、小さなスコープ、高い凝集度、表現力豊かな識別子の選択です。それらを考えると、コードは理解しやすくなり、そのようなコードは優れています。

Spartanプログラミングを検討することをお勧めします。

ほとんどのコーディング標準は、不完全に記述されたコードをきれいに見せるための方法を示しており、「コーディングスタイル」に関するほとんどの議論は、実際にはフォーマットに関するものです。コードのフォーマットとは、コードの構造を視覚的に表現することです。コーディングスタイルはコード構造の表現方法ではなく、コードの構造方法であるため、簡単で自動化可能であり、コーディングスタイルで何もする必要はほとんどありません。
命名規則については宗教的な戦争もたくさんありますが、実際にはそれらは貧弱なデザインを回避するためのハックにすぎません。名前が意味することを言っていれば、名前は良いことです。スコープが小さく、明確であればあるほど、そのような名前を選択しやすくなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.