एक प्रोग्रामिंग भाषा बोली जाने वाली भाषा के समान ही है। अंतर केवल इतना है कि यह एक विशेष भाषा है जिसका मुख्य उद्देश्य कंप्यूटर को समझाने के लिए कंप्यूटर के साथ संचार की सुविधा प्रदान करना है कि हम क्या करना चाहते हैं। लेकिन आप कंप्यूटर से व्यक्तिगत बातचीत नहीं कर सकते। जब आपने एक प्रोग्रामिंग भाषा सीखना शुरू किया, तो आपने किताबों या CodeGym जैसे कुछ शैक्षिक संसाधनों को देखा। और इस संसाधन ने आपको कोड दिखाया जिसे कंप्यूटर समझता है। लेकिन जब आप जावा भाषा सीखते हैं तो आपको भी इसे समझना चाहिए। जैसा कि किसी भी भाषा के साथ होता है, प्रोग्रामिंग में कुछ स्वरूपण परिपाटियों को अपनाया गया है। उदाहरण के लिए, विनम्र समाज में, wRiTiNg LiKe ThIs को बुरा व्यवहार माना जाएगा। और जावा में, एक बड़े अक्षर के साथ एक विधि का नाम शुरू करना कोडिंग सम्मेलनों का घोर उल्लंघन है।
जावा प्रोग्रामिंग लैंग्वेज के लिए दस्तावेज़ कोड कन्वेंशन में जावा कोड के नियम दिए गए हैं । कोडिंग परंपराएं इंडेंटेशन जैसे छोटे विवरणों को भी नियंत्रित कर सकती हैं। पूरी तरह से दुःस्वप्न की कल्पना करें कि यदि इंडेंटेशन असंगत था, कुछ लोग टैब का उपयोग कर रहे थे और अन्य लोग रिक्त स्थान का उपयोग कर रहे थे तो संस्करण नियंत्रण बन जाएगा। यह किसी ऐसे व्यक्ति के लिए कैसा होगा जिसे केवल एक विधि में सुधार की जांच करने की आवश्यकता है, लेकिन रिक्त स्थान और टैब में अंतर के कारण पूरी फ़ाइल बदल जाती है? बेशक, सामान्य भाषा की तरह, जहां भाषा का उपयोग किया जाता है, उसके आधार पर परंपराएं बदल सकती हैं। उदाहरण के लिए, वेब के विशाल विस्तार में, आप Google जावा स्टाइल गाइड और ट्विटर जावा स्टाइल गाइड पा सकते हैं. इस समीक्षा के लिए, हमें एक परीक्षण विषय की आवश्यकता है। हम ग्रैडल बिल्ड ऑटोमेशन सिस्टम का उपयोग करेंगे। यह टेम्प्लेट से एक नया प्रोजेक्ट बनाकर हमें जल्दी से आरंभ करने देगा। ग्रैडल के पास एक बेहतरीन प्लगइन है: Build Init Plugin । आइए एक नई निर्देशिका पर जाएं और वहां निम्न आदेश चलाएं:
स्क्रीनशॉट से पता चलता है कि हम "चेन्ड मेथड कॉल्स" को "हमेशा रैप" करने के लिए सेट कर सकते हैं, यानी हमेशा चेन्ड मेथड कॉल्स को अलग-अलग लाइनों में विभाजित करें। अब टेस्ट क्लास में फिर से फॉर्मेटिंग बटन पर क्लिक करें और हम देखते हैं कि यह वास्तव में काम करता है! लेकिन कभी-कभी आपको मानक स्वरूपण नियमों के बाहर कुछ कोड प्रारूपित करने की आवश्यकता होती है। स्वरूपण को निम्नानुसार सेट करें:
स्वरूपण को रोकने के लिए, "कोड शैली" अनुभाग में, फ़ॉर्मेटर मार्करों को सक्षम करें:
अब हम अपनी टेस्ट क्लास को बदल सकते हैं ताकि इसका कोड दोबारा स्वरूपित न हो:
जैसा कि आप देख सकते हैं, वहां बहुत सारी सेटिंग्स हैं।
फिर हम सेटिंग्स को आयात या निर्यात कर सकते हैं:
एक अन्य विकल्प IDEA सेटिंग्स को आयात करना है:
एक तीसरा विकल्प सेटिंग्स रिपॉजिटरी है। सेटिंग्स रिपॉजिटरी का उपयोग करने के लिए, निम्नलिखित लिंक पर अधिक विवरण के लिए IntelliJ IDEA सहायता दस्तावेज़ देखें: सेटिंग्स रिपॉजिटरी "। एक टीम पर एक एकीकृत शैली को आगे बढ़ाने की बात करते हुए, मैं भी मदद नहीं कर सकता लेकिन ग्रहण से शैलियों के लिए अच्छे समर्थन का उल्लेख करता हूं। आईडीई। ऐसा करने के लिए, आपको एक अलग प्लगइन स्थापित करने की आवश्यकता है: फ़ाइल -> सेटिंग्स (Ctrl+Alt+S) के माध्यम से आईडीईए सेटिंग्स खोलें और "प्लगइन्स" अनुभाग पर जाएं। नए प्लगइन्स खोजने के लिए, " " बटन पर क्लिक करें।
इसे स्थापित करने के बाद, आपको आईडीईए को पुनरारंभ करना होगा - यह मानक प्रक्रिया है। अब सब कुछ हो गया है। आईडीईए सेटिंग्स में एक नया खंड है: "एक्लिप्स कोड फॉर्मेटर"।. यह कुछ ऐसा दिखाई देगा:
इसके अलावा, कॉलम "
और इसके लिए सामग्री निर्दिष्ट करें
उसके बाद, हम ऐप क्लास के ऊपर की टिप्पणी को जावाडॉक में बदल सकते हैं और देख सकते हैं कि त्रुटि एक नए बिल्ड में चली गई है।

gradle init --type java-application
उसके बाद, IntelliJ IDEA प्रारंभ करें। यदि आप एक खुली परियोजना के साथ एक खिड़की देखते हैं (यानी आप कोड संपादक और प्रोजेक्ट ट्री देखते हैं), तो इस परियोजना को File -> Close Project
. अब स्वागत विंडो में, " Import Project
" चलाएँ और हमारी नई परियोजना आयात करें। आयात करते समय, Use autoimport
चेकबॉक्स सेट करें। आइए जानें कि क्या हम जीवन को सरल बनाने के लिए अत्याधुनिक विकास साधनों का उपयोग कर सकते हैं।
आईडीईए में कोड स्वरूपण
प्रोजेक्ट इम्पोर्ट करने के बाद, 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 testSumOfOddNumbers() {
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;
जैसा कि आप देख सकते हैं, स्ट्रीम पर ऑपरेशन एक लाइन पर है। लेकिन क्या होगा अगर हम यह सुनिश्चित करना चाहते हैं कि जंजीर पद्धति कॉल हमेशा प्रत्येक अवधि ऑपरेटर पर नई लाइनों में विभाजित हो? हम इसे मैन्युअल रूप से कर सकते थे। लेकिन याद रखें कि हम चाहते हैं कि सब कुछ अपने आप हो जाए। वास्तव में, हम निश्चित रूप से समय-समय पर मैनुअल कदम भूल जाएंगे, और फिर हम हर जगह अलग-अलग स्वरूपण के साथ समाप्त हो जाएंगे, और यह अच्छा नहीं है। इसलिए हमें उस नियम को संपादित करने की आवश्यकता है जिसका उपयोग आईडीईए प्रारूपण के लिए करता है। चुननाFile -> Settings
आईडिया मेनू में (या Ctrl+Alt+S दबाएं)। सेटिंग विंडो में खोज फ़ील्ड में "कोड शैली" दर्ज करें। "कोड शैली" अनुभाग में, आप केवल जावा की तुलना में अधिक भाषाओं के लिए सेटिंग निर्दिष्ट कर सकते हैं। लेकिन जावा वह है जिसमें हम अभी रुचि रखते हैं। जैसा कि आप देख सकते हैं, सेटिंग्स कई टैब में विभाजित हैं। एक सुपर उपयोगी विशेषता यह है कि ऑपरेशन का एक उदाहरण विंडो के दाहिने हिस्से में दिखाया गया है: 


@Test
public void testSumOfOddNumbers() {
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
}
आपने देखा होगा कि जब आप टैब दबाते हैं, तो आईडीईए इसे एक स्थान के रूप में व्याख्या करता है (यह डिफ़ॉल्ट व्यवहार है)। लेकिन आप इसे " " खंड में बदल सकते हैं Code Style
: 
Code style
आप सेटिंग्स के बारे में अधिक विवरण " " यहां पढ़ सकते हैं : " आईडिया सहायता: कोड शैली "। एक और महत्वपूर्ण स्वरूपण सुविधा है: आयात स्वरूपण। यह ऑपरेशन अलग से चलाया जाता है और इसे " Optimize Imports
" कहा जाता है। यह Code -> Optimize Imports
(Ctrl+Alt+O) के अंतर्गत स्थित है। आयात का अनुकूलन अनावश्यक आयात को हटाता है और जावा के लिए सेटिंग Imports
के " " टैब में सेटिंग्स के अनुसार आयात को सही क्रम में व्यवस्थित करता है। Code Style
और तो और, यदि आप चाहते हैं कि यह स्वरूपण अपने आप हो जाए, तो एक अच्छी खबर है:क्रियाएँ प्लगइन सहेजें ।
एक कमांड में सेटिंग्स का वितरण
हमने ऊपर देखा कि आप अपनी फ़ॉर्मैटिंग शैली को जैसे चाहें अनुकूलित कर सकते हैं। लेकिन आप इस शैली का उपयोग एक टीम के भीतर कैसे करते हैं? बहुत आसानी से। कई विकल्प हैं। कोड शैली योजना को सहेजना सबसे आसान है।File -> Settings
(या Ctrl+Alt+S दबाएं) का उपयोग करके आईडिया सेटिंग्स खोलें । " Code Style
" अनुभाग में, हम "स्कीम" देख सकते हैं। यह हमारी स्वरूपण योजना है। डिफ़ॉल्ट रूप से, "डिफ़ॉल्ट" योजना का उपयोग किया जाता है और इसे "आईडीई" लेबल किया जाता है, जिसका अर्थ है कि यह सेटिंग केवल हमारे आईडीई पर लागू होती है - यह किसी और को प्रभावित नहीं करती है। एक "कस्टम" योजना बनाने के लिए, कॉपी बनाने के लिए दाईं ओर दिए गए बटन का उपयोग करें और इसे एक नाम दें, उदाहरण के लिए: CodeGym 


Browse Repositories
फिर खोज विंडो में एक्लिप्स कोड फ़ॉर्मेटर प्लगइन खोजें। 

सख्त आवश्यकताएं
आईडीईए टूल्स के अलावा, आप आवश्यकताओं को कसने के लिए बिल्ड ऑटोमेशन प्लगइन्स का भी उपयोग कर सकते हैं। ऐसा कोई तरीका नहीं है जिससे आप मैन्युअल रूप से जांच सकें कि किसी ने उचित स्वरूपण का उपयोग किया है। शायद आप एक टीम में 5 लोगों के साथ हो सकते हैं। लेकिन एक कंपनी में 100 लोगों के साथ, यह यथार्थवादी नहीं है। और पांच को भी ट्रैक करना मुश्किल होगा। और इनमें से किसी पर अपना समय क्यों बर्बाद करें? नियमों का उल्लंघन होने पर परियोजना को बनने से रोकना बहुत आसान होगा। वास्तव में, यह एक अलग विषय है जिसे "निरीक्षण कोड" कहा जाता है। इस लेख में, मैं आपको केवल यह दिखाना चाहता हूं कि यह कैसे काम करता है। सबसे लोकप्रिय ग्रैडल प्लगइन्स में से एक (क्योंकि यह हमारी परियोजना बनाता है, आपको याद होगा) पीएमडी है. इसे सक्षम करने के लिए, बस हमारे ग्रैडल प्रोजेक्ट की बिल्ड स्क्रिप्ट (हमारे प्रोजेक्ट के रूट पर बिल्ड.ग्रेड फ़ाइल) पर जाएं और बाकी प्लगइन्स के बगल में पीएमडी जोड़ें: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
" पीएमडी प्लगइन की वेबसाइट पर समस्या के वर्णन के लिए एक लिंक प्रदान करता है। उदाहरण के लिए, " headerCommentRequirement Required
" त्रुटि के लिए, लिंक यहाँ जाता है: pmd — CommentRequired । यह त्रुटि इस बात का संकेत है कि हमारी कक्षा में JavaDoc नहीं है। हम जावाडॉक को ऊपर की कक्षाओं को कॉन्फ़िगर करने के लिए टेम्प्लेट का उपयोग कर सकते हैं: 
File Header
: 
तल - रेखा
किसी परियोजना पर उत्पादकता को अधिकतम करने के लिए कोड शैली महत्वपूर्ण है। साझा नियमों के अनुसार लिखा गया सुंदर कोड यह गारंटी देता है कि आपके सहकर्मी इसे अधिक आसानी से और शीघ्रता से समझेंगे और आपको एक कान की आलोचना नहीं देंगे। आधुनिक विकास साधनों के साथ, शैली के नियमों से चिपके रहना इतना कठिन नहीं है। मुझे उम्मीद है कि इस समीक्षा ने आपको साबित कर दिया है कि यह सच है। परंपरा का पालन करते हुए, यहाँ विषय पर थोड़ी अतिरिक्त सामग्री दी गई है:- JetBrainsTV से वीडियो: " इंस्पेक्ट कोड (IntelliJ IDEA) "
- " ग्रेडल प्लगइन्स के साथ कोड विश्लेषण " की समीक्षा
- " स्वचालित कोड गुणवत्ता " पाठ्यक्रम
GO TO FULL VERSION