Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π ΡΠΎΠΌ ΡΠΈΡΠ»Π΅, Π»Π΅Π³ΡΠ΅ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΡΠΈΠ»Π΅ΠΌ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΡΡΠ°ΡΠ°ΡΡΡ ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ Π΅Π³ΠΎ "ΡΠ°ΠΌΠΎΠ²ΠΎΠ»ΡΠ½ΠΎΠ΅" ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΎΠ±Π·ΠΎΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ IDE IntelliJ Idea ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ΄ Π±ΡΠ»ΠΎ ΠΏΡΠΈΡΡΠ½ΠΎ ΡΠΈΡΠ°ΡΡ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ.
ΠΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅
Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΡΠ·ΡΠΊ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π³ΠΎΠ²ΠΎΡΡΡ Π»ΡΠ΄ΠΈ. Π Π°Π·Π½ΠΈΡΠ° Π»ΠΈΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΡΠΉ ΡΠ·ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ Π΅ΠΌΡ, ΡΡΠΎ ΠΌΡ ΠΎΡ Π½Π΅Π³ΠΎ Ρ ΠΎΡΠΈΠΌ. ΠΠΎ ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½ Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ. ΠΠ°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π°ΡΠΈΠ½Π°Π»ΠΈ ΠΈΠ·ΡΡΠ°ΡΡ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²Ρ ΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π² ΠΊΠ½ΠΈΠ³Ρ ΠΈΠ»ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΡΡΡ Π²ΡΠΎΠ΄Π΅ JavaRush. Π Π² ΡΡΠΎΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΉΠΌΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ. ΠΠΎ ΠΈ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π΅Π³ΠΎ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ Π²Π°Ρ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π½Π°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° Java. ΠΠ°ΠΊ ΠΈ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΡΠΡΠ¬ Π·ΠΠ±ΠΡΠΠΌ Π² ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΠΌ Π΄ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ½Π°, Π° Π² Java Π½Π°Π·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π±ΡΠΊΠ²Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³ΡΡΠ±ΡΠΌ Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ΠΌ code style. ΠΡΠ°Π²ΠΈΠ»Π° ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ Java ΠΊΠΎΠ΄Π° ΡΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ Java Code Convention. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΈΠ»Ρ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΡΡΡΠΏΡ. Π ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅ Π²Π΅ΡΡ ΠΊΠΎΡΠΌΠ°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΡΠ°ΠΉΠ» ΡΠΎ Ρ ΠΎΡΡΡΡΠΏΠ°ΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ tab, ΡΠΎ Ρ ΠΎΡΡΡΡΠΏΠ°ΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ². ΠΠ°ΠΊΠΎΠ²ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΌΡ, ΠΊΠΎΠΌΡ Π½Π°Π΄ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°Π²ΠΊΡ Π²ΡΠ΅Π³ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅, Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ½ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡ ΡΠ°ΠΉΠ» ΠΈΠ·-Π·Π° ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² Π½Π° ΡΠ°Π±Ρ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, ΡΡΠΈΠ»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΠΏΡΠΎΡΡΠΎΡΠ°Ρ ΡΠ΅ΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Google Java Style Guide ΠΈΠ»ΠΈ Twitter Java Style Guide. ΠΠ»Ρ ΡΡΠΎΠΉ ΠΎΠ±Π·ΠΎΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΈΡΠΏΡΡΡΠ΅ΠΌΡΠΉ. ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ»ΡΠ³ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Gradle. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ°. Π£ Gradle Π΅ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ»Π°Π³ΠΈΠ½: Build Init Plugin. ΠΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ Π² Π½ΠΎΠ²ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:gradle init --type java-application
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ IntelliJ Idea. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΎΠΊΠ½ΠΎ Ρ ΡΠΆΠ΅ ΠΎΡΠΊΡΡΡΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ (ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΊΠΎΠ΄Π°, Π΄Π΅ΡΠ΅Π²ΠΎ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°), Π·Π°ΠΊΡΠΎΠ΅ΠΌ ΡΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ File -< Close Project
. Π’Π΅ΠΏΠ΅ΡΡ Π² ΠΎΠΊΠ½Π΅ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ "Import Project"
ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ Π½Π°Ρ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ΅ Π²ΡΡΡΠ°Π²ΠΈΠΌ ΡΠ»Π°Π³ "Use autoimport"
.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΆΠΈΠ·Π½Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² Idea
ΠΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΈΠΌΠΏΠΎΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½Π°ΠΆΠΌΡΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡCtrl+N
ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ Π² ΠΊΠ»Π°ΡΡ AppTest
.
ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ β ΠΊΠ»Π°ΡΡ ΡΠ΅ΡΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
import org.junit.Test;
import static org.junit.Assert.*;
public class AppTest {
@Test public void testAppHasAGreeting() {
App classUnderTest = new App();
assertNotNull("app should have a greeting", classUnderTest.getGreeting());
}
}
Π§ΡΠΎ ΡΡΡ ΡΡΠ°Π·Ρ Π±ΡΠΎΡΠ°Π΅ΡΡΡ Π² Π³Π»Π°Π·Π°? ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ΠΊΡΠ°ΡΠΈΠ²ΠΎ, ΡΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ.
ΠΠ°ΠΊ ΠΆΠ΅ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ? Π IntelliJ Idea Π΅ΡΡΡ ΡΠ°Π·Π΄Π΅Π» ΠΌΠ΅Π½Ρ "Code"
Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ Ρ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΊΠΎΠΉ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ "Reformat Code"
ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ Ctrl + L
.
ΠΠΎΡΠ»Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, Π° ΡΠ°ΠΌ ΠΌΠ΅ΡΠΎΠ΄ β Π½Π° Π΄ΡΡΠ³ΠΎΠΉ. Π‘ΡΠΎΠΈΡ ΡΡΠ°Π·Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΄Π°Π½Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π°Π΄ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΡΠ°ΡΡΠΊΠΎΠΌ ΠΊΠΎΠ΄Π°. Π Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° Π½Π°Π΄ Π²ΡΠ΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄:
@Test
public void testSummOfOddNumbers() {
List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
Integer result = data.stream().filter(number -> number % 2 == 0).reduce((n1, n2) -> n1 + n2).get();
assertThat(result, is(12));
}
Π Π΄Π²Π° ΠΈΠΌΠΏΠΎΡΡΠ°:
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π½Π°Π΄ Stream ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π° Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ. Π ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅Π³Π΄Π° ΠΌΠ΅ΡΠΎΠ΄Ρ, Π²ΡΠ·ΠΎΠ² ΠΊΠΎΡΠΎΡΡΡ
Π²ΡΡΡΡΠΎΠ΅Π½ Π² ΡΠ΅ΠΏΠΎΡΠΊΡ, ΡΠ°Π·Π±ΠΈΠ²Π°Π»ΠΎ ΠΏΠΎ ΡΠΎΡΠΊΠ΅ Π½Π° Π½ΠΎΠ²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ? Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΡΡΠ½ΡΡ. ΠΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Ρ Π½Π°Ρ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΡΠ°ΠΌΠΎ. ΠΠ΅Π΄Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π·Π°Π±ΡΠ²Π°ΡΡ, ΠΈ ΡΠΎΡΠΌΠ°Ρ ΠΊΠΎΠ΄Π° ΡΡΠ°Π½Π΅Ρ Π²Π΅Π·Π΄Π΅ ΡΠ°Π·Π½ΡΠΌ, Π° ΡΡΠΎ Π½Π΅ Π΅ΡΡΡ Ρ
ΠΎΡΠΎΡΠΎ. ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, Π½Π°Π΄ΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Idea Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΡΠ±Π΅ΡΠ΅ΠΌ Π² Idea Π² ΠΌΠ΅Π½Ρ ΠΏΡΠ½ΠΊΡ File -> Settings
(ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΡΠΌ Ctrl + Alt + S
). Π ΠΏΠΎΠ»Π΅ ΠΏΠΎΠΈΡΠΊΠ° Π² ΠΎΠΊΠ½Π΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π½Π°ΠΏΠΈΡΠ΅ΠΌ "Code style". Π ΡΠ°Π·Π΄Π΅Π»Π΅ Code style Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Java. ΠΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ Java. ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°Π·Π±ΠΈΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΊΠ»Π°Π΄ΠΎΠΊ. Π§ΡΠΎ ΡΠ°ΠΌΠΎΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅, ΡΠ°ΠΊ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π² ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΊΠ½Π°:
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ Π΄Π»Ρ "Chained method calls" ΠΊΠ°ΠΊ "wrap always", Ρ.Π΅. ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ Π²ΡΠ΅Π³Π΄Π° Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΆΠΌΡΠΌ Π΅ΡΡ ΡΠ°Π· ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ΅ΡΡΠ΅ ΠΈ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ!
ΠΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π±ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π΅ΡΡΡ Π½ΡΠΆΠ΄Π° ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠΎΠ΄ Π²Π½Π΅ ΠΎΠ±ΡΠΈΡ
ΠΏΡΠ°Π²ΠΈΠ» ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΡΡΡΠΎΠΈΠΌ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π§ΡΠΎΠ±Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΡΠΊΠ»ΡΡΠ°ΡΡ, Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Code Style Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΡΠ° ΡΠ°ΠΊ, ΡΡΠΎ Π΅Π³ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π² ΡΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΌΡ:
@Test
public void testSummOfOddNumbers() {
List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
// @formatter:off
Integer result = data.stream().filter(number -> number % 2 == 0)
.reduce((n1, n2) -> n1 + n2)
.get();
assertThat(result, is(12));
// @formatter:on
}
ΠΠ°, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ: ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΡΠ΅ Tab, Idea Π·Π° Π²Π°Ρ Π΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ±Π΅Π»Ρ (ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ). ΠΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΌ ΠΆΠ΅ Π² Code Style:
ΠΠ°ΠΊ ΠΡ Π²ΠΈΠ΄Π΅ΡΠ΅, ΡΠ°ΠΌ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π°ΡΡΡΠΎΠ΅ΠΊ. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Code style ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π·Π΄Π΅ΡΡ: "Idea Help: Code Style".
ΠΡΡΡ Π΅ΡΡ ΠΎΠ΄Π½Π° Π²Π°ΠΆΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΎΠ².
ΠΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ
"Optimize Imports"
ΠΈ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΡΠ½ΠΊΡΠ΅ ΠΌΠ΅Π½Ρ Code -> Optimize Imports
(Ctrl + Alt + O).
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠΎΠ² ΡΠ±ΠΈΡΠ°Π΅Ρ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΈΡ
Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΈΠ· Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Imports Π½Π°ΡΡΡΠΎΠ΅ΠΊ Code Style Π΄Π»Ρ Java.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π·Π°Ρ
ΠΎΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΠ»ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π΄Π»Ρ Π²Π°Ρ Π΅ΡΡΡ Ρ
ΠΎΡΠΎΡΠ°Ρ Π½ΠΎΠ²ΠΎΡΡΡ: ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π° Save Actions.
Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅
ΠΡΠ»ΠΈΡΠ½ΠΎ, Π²ΡΡΠ΅ ΠΌΡ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠΈΠ»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π½Π°ΠΌ ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΠΎ ΠΊΠ°ΠΊ ΡΡΠΎΡ ΡΡΠΈΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅? ΠΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ. ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ². Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ β ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΡ Π΅ΠΌΡ. ΠΡΠΊΡΠΎΠ΅ΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Idea ΡΠ΅ΡΠ΅Π· File -> Settings (ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΡΠΌ Ctrl + Alt + S). Π ΡΠ°Π·Π΄Π΅Π»Π΅ Code Style ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½Π°Π΄ΠΏΠΈΡΡ Scheme. ΠΡΠΎ Π½Π°ΡΠ° ΡΡ Π΅ΠΌΠ° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π° ΡΡ Π΅ΠΌΠ° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Default ΠΈ ΡΡΠ΄ΠΎΠΌ ΠΏΡΠΈΠΏΠΈΡΠΊΠ° IDE: ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ IDE, ΠΈ ΠΎΠ½Π° Π½Π΅ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π½ΠΈ Π½Π° ΠΊΠΎΠ³ΠΎ. Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ "ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ" ΡΡ Π΅ΠΌΡ, ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΡΠΏΡΠ°Π²Π° Π΄Π΅Π»Π°Π΅ΠΌ "Π΄ΡΠ±Π»ΠΈΠΊΠ°Ρ" ΠΈ Π΄Π°ΡΠΌ Π΅ΠΌΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: JavaRushΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ:
ΠΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΡΠΎ ΠΈΠΌΠΏΠΎΡΡ ΠΈΠΌΠΏΠΎΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Idea:
Π’ΡΠ΅ΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β Settings Repository. ΠΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Settings Repository ΡΠΌ. ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ "IntelliJ Idea Help : Settings Repository".
Π ΡΠ΅ΠΌΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΌΠΎΠ³Ρ Π½Π΅ ΠΎΡΠΌΠ΅ΡΠΈΡΡ Ρ
ΠΎΡΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΡΠΈΠ»Π΅ΠΉ ΠΈΠ· IDE Eclipse. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π°: ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Idea ΡΠ΅ΡΠ΅Π· File -> Settings (Ctrl + Alt + S) ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π» Plugins.
ΠΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π½ΠΎΠ²ΡΡ
ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π½Π°ΠΆΠΌΡΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ
"Browse Repositories"
, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π² ΠΎΠΊΠ½Π΅ ΠΏΠΎΠΈΡΠΊΠ° Π½Π°ΠΉΠ΄ΡΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ Eclipse Code Formatter.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ Idea β ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΡ ΡΠ°ΠΌ ΠΆΠ΅, Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
Idea, ΠΌΡ Π½Π°ΠΉΠ΄ΡΠΌ Π½ΠΎΠ²ΡΠΉ ΡΠ°Π·Π΄Π΅Π»: "Eclipse Code Formatter"
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Eclipse ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ Π·Π΄Π΅ΡΡ.
ΠΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
Π£ΠΆΠ΅ΡΡΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ
ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠ΅Π΄ΡΡΠ² Idea, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΡΠΈΡΡΠ΅ΠΌ ΡΠ±ΠΎΡΠΎΠΊ Π΄Π»Ρ ΡΠΆΠ΅ΡΡΠΎΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ. ΠΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ 5 ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ β Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ. ΠΡΠ»ΠΈ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ 100 ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ β Π½Π΅ΡΠ΅Π°Π»ΡΠ½ΠΎ. ΠΠ° Π΄Π°ΠΆΠ΅ Π·Π° ΠΏΡΡΡΡ ΡΡΠ»Π΅Π΄ΠΈΡΡ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ΄Π½ΠΎ. ΠΠ° ΠΈ Π·Π°ΡΠ΅ΠΌ Π»ΠΈΡΠ½ΡΡ ΡΡΠ°ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠ°ΠΊΠΎΠ΅? ΠΡΠ΄Π° ΠΏΡΠΎΡΠ΅ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΡΠΈ Π½Π°ΡΡΡΠ΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ°Π²ΠΈΠ». ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΡΡΠΎ ΡΠΆΠ΅ ΡΠ΅Π»Π°Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΠ΅ΠΌΠ° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ "Inspect Code". Π ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π΄Π»Ρ Gradle (Ρ.ΠΊ. ΠΎΠ½ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Ρ Π½Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅) ΡΠ²Π»ΡΠ΅ΡΡΡ pmd. ΠΠ»Ρ Π΅Π³ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² build script Π½Π°ΡΠ΅Π³ΠΎ gradle ΠΏΡΠΎΠ΅ΠΊΡΠ° (ΡΠ°ΠΉΠ» build.gradle Π² ΠΊΠΎΡΠ½Π΅ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°) ΠΈ ΡΠΊΠ°Π·Π°ΡΡ Π² Π½ΡΠΌ pmd ΡΡΠ΄ΠΎΠΌ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ:plugins {
// Apply the java plugin to add support for Java
id 'java'
// Check source code
id 'pmd'
// Apply the application plugin to add support for building an application
id 'application'
}
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°ΠΌ ΠΆΠ΅:
pmd {
ignoreFailures = false
pmdTest.enabled = true
ruleSets = [
'java-basic',
'java-braces',
'java-clone',
'java-codesize',
'java-comments',
'java-controversial',
'java-coupling',
'java-design',
'java-empty',
'java-finalizers',
'java-imports',
'java-optimizations',
'java-strictexception',
'java-strings',
'java-typeresolution',
'java-unnecessary',
'java-unusedcode'
]
}
ΠΠ°ΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠΆΠ΅ Π²ΡΡ Π½Π΅ Ρ
ΠΎΡΠΎΡΠΎ. ΠΡΠΏΠΎΠ»Π½ΠΈΠΌ gradle build ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΎΡΠΈΠ±ΠΊΡ. Π§ΡΠΎ ΠΏΡΠΈΡΡΠ½ΠΎ, ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΎΡΡΡΡ. Π Π΅ΡΠ»ΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π°:
BUILD FAILED in 35s
6 actionable tasks: 6 executed
7 PMD rule violations were found. See the report at: file:///C:/_study/codestyle/build/reports/pmd/main.html
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ Π² ΠΎΡΡΡΡ, ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅:
ΠΡΠΈΡΡΠΌ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Problem Π΄Π°Π½Π° ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Π° pmd. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΎΡΠΈΠ±ΠΊΠΈ "headerCommentRequirement Required" ΡΡΡΠ»ΠΊΠ° Π²Π΅Π΄ΡΡ ΡΡΠ΄Π°: pmd - CommentRequired.
ΠΠ°Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π°ΠΌΠ΅ΠΊΠ°Π΅Ρ Π½Π°ΠΌ, ΡΡΠΎ Π½Π°Ρ ΠΊΠ»Π°ΡΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ JavaDoc. ΠΠ°Π»ΠΈΡΠΈΠ΅ JavaDoc Π½Π°Π΄ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ²:
Π ΡΠΊΠ°Π·Π°ΡΡ Π΄Π»Ρ File Header ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅:
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΠΊΠ»Π°ΡΡΠΎΠΌ App Π² JavaDoc ΠΈ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΡΠΈ Π½ΠΎΠ²ΠΎΠΌ Build, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΡΡΠ΅Π·Π»Π°.
ΠΡΠΎΠ³
Π‘ΡΠΈΠ»Ρ ΠΊΠΎΠ΄Π° Π²Π°ΠΆΠ΅Π½ Π΄Π»Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ. ΠΡΠ°ΡΠΈΠ²ΡΠΉ ΠΊΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΏΠΎ ΠΎΠ±ΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ β Π·Π°Π»ΠΎΠ³ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Π°ΡΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ ΠΈ Π±ΡΡΡΡΠ΅Π΅ ΠΏΠΎΠΉΠΌΡΡ, ΠΈ Π½Π΅ ΡΠΊΠ°ΠΆΡΡ Π² Π²Π°Ρ Π°Π΄ΡΠ΅Ρ ΠΏΠ°ΡΡ Π»Π°ΡΠΊΠΎΠ²ΡΡ . Π£ΡΠΈΡΡΠ²Π°Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ» Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠ°Π΄Π΅ΡΡΡ, Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±Π·ΠΎΡ ΠΏΠΎΠΊΠ°Π·Π°Π», ΡΡΠΎ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΠΊ. ΠΡ ΠΈ ΠΏΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΈ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΠΏΠΎ ΡΠ΅ΠΌΠ΅:- ΠΠΈΠ΄Π΅ΠΎ ΠΎΡ JetBrainsTV: "Inspect Code (IntelliJ IDEA)"
- ΠΠ±Π·ΠΎΡ "Code Analysis With Gradle Plugins"
- ΠΡΡΡ "Automate Code Quality"