یک زبان برنامه نویسی بسیار شبیه به یک زبان گفتاری است. تنها تفاوت این است که یک زبان خاص است که هدف اصلی آن تسهیل ارتباط با یک کامپیوتر است تا به کامپیوتر توضیح دهیم که ما می خواهیم چه کاری انجام دهد. اما شما نمی توانید با کامپیوتر مکالمه شخصی داشته باشید. زمانی که شروع به یادگیری یک زبان برنامه نویسی کردید، به کتاب ها یا برخی منابع آموزشی مانند CodeGym نگاه می کردید. و این منبع کدی را به شما نشان داد که رایانه آن را درک می کند. اما شما نیز باید با یادگیری زبان جاوا آن را درک کنید. مانند هر زبان دیگری، برخی از قراردادهای قالب بندی در برنامه نویسی پذیرفته شده اند. به عنوان مثال، در جامعه مودبانه، این گونه نوشتن را بد اخلاقی می دانند. و در جاوا، شروع نام یک روش با حرف بزرگ نقض فاحش قوانین کدگذاری است.
قوانین کد جاوا در سند کد قراردادها برای زبان برنامه نویسی جاوا
آمده است . قراردادهای کدگذاری همچنین میتوانند جزئیات کوچکتری مانند تورفتگی را تنظیم کنند. تصور کنید که اگر تورفتگی ناهماهنگ باشد، کنترل نسخه به کابوس کامل تبدیل می شود، برخی افراد از تب ها و افراد دیگر از فاصله استفاده می کنند. برای کسی که نیاز به بررسی درستی فقط در یک روش دارد، اما متوجه می شود که کل فایل به دلیل تفاوت در فاصله ها و برگه ها تغییر کرده است، چگونه خواهد بود؟ البته، مانند زبان معمولی، قراردادها ممکن است بسته به محل استفاده از یک زبان تغییر کنند. به عنوان مثال، در گستره وسیع وب، می توانید راهنمای سبک جاوا گوگل
و راهنمای سبک جاوا توییتر را
بیابید . برای این بررسی، به یک موضوع آزمایشی نیاز داریم. ما از سیستم اتوماسیون ساخت Gradle استفاده خواهیم کرد. این به ما اجازه می دهد تا با ایجاد یک پروژه جدید از یک الگو به سرعت شروع کنیم. Gradle یک افزونه عالی دارد: Build Init Plugin
. بیایید به یک دایرکتوری جدید برویم و دستور زیر را در آنجا اجرا کنیم:
تصویر صفحه نشان می دهد که می توانیم "Chained method calls" را روی "wrap always" تنظیم کنیم، یعنی همیشه فراخوانی های متد زنجیره ای را به خطوط جداگانه تقسیم کنیم. حالا دوباره در کلاس تست دکمه قالب بندی را بزنید و می بینیم که واقعا کار می کند! اما گاهی اوقات لازم است برخی کدها را خارج از قوانین قالب بندی استاندارد قالب بندی کنید. قالب بندی را به صورت زیر تنظیم کنید:
برای جلوگیری از قالب بندی، در بخش «سبک کد»، نشانگرهای قالبکننده را فعال کنید:
اکنون میتوانیم کلاس آزمایشی خود را تغییر دهیم تا کد آن دوباره قالببندی نشود:
همانطور که می بینید، تنظیمات زیادی در آنجا وجود دارد. می توانید جزئیات بیشتر در مورد
سپس می توانیم تنظیمات را وارد یا صادر کنیم:
گزینه دیگر وارد کردن تنظیمات IDEA است:
گزینه سوم مخزن تنظیمات برای استفاده از مخزن تنظیمات، مستندات راهنمای IntelliJ IDEA را برای جزئیات بیشتر در پیوند زیر ببینید: مخزن تنظیمات
". در مورد ایجاد یک سبک یکپارچه در یک تیم، من همچنین نمیتوانم از پشتیبانی خوب سبکهای Eclipse خودداری کنم. IDE. برای انجام این کار، باید یک افزونه جداگانه نصب کنید: تنظیمات IDEA را از طریق File -> Settings (Ctrl+Alt+S) باز کنید و به بخش "Plugins" بروید. برای یافتن افزونه های جدید، روی دکمه " " کلیک کنید.
پس از نصب آن، باید IDEA را دوباره راه اندازی کنید - این یک روش استاندارد است. اکنون همه چیز انجام شده است. یک بخش جدید در تنظیمات IDEA وجود دارد: "Eclipse Code Formatter". می توانید یک نمونه فایل فرمت Eclipse را در اینجا
پیدا کنید . چیزی شبیه به این خواهد بود:
علاوه بر این، ستون "
و محتویات آن را مشخص کنیم
پس از آن، میتوانیم نظر بالای کلاس App را به JavaDoc تبدیل کنیم و ببینیم که خطا در یک ساخت جدید برطرف شده است.

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());
}
}
چه چیزی بلافاصله توجه شما را جلب می کند؟ حاشیه نویسی در همان خط با اعلان روش، که زشت به نظر می رسد، درست است؟ چگونه این را رفع کنیم؟ Code
IntelliJ IDEA یک ورودی منو برای دستکاری های مختلف کد دارد . یکی از این دستکاری ها " " است 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;
همانطور که می بینید، عملیات در Stream در یک خط است. اما اگر بخواهیم مطمئن شویم که فراخوانی های متد زنجیره ای همیشه به خطوط جدید در هر اپراتور دوره تقسیم می شوند، چه؟ ما می توانیم این کار را به صورت دستی انجام دهیم. اما به یاد داشته باشید که ما می خواهیم همه چیز به طور خودکار اتفاق بیفتد. در واقع، ما مطمئناً هر از گاهی مرحله دستی را فراموش خواهیم کرد، و سپس در همه جا با قالببندیهای متفاوتی مواجه خواهیم شد، و این خوب نیست. بنابراین باید قاعده ای را که IDEA برای قالب بندی استفاده می کند ویرایش کنیم. File -> Settings
در منوی IDEA انتخاب کنید (یا 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
}
ممکن است متوجه شده باشید که وقتی Tab را فشار می دهید، IDEA آن را به عنوان یک فاصله تفسیر می کند (این رفتار پیش فرض است). اما می توانید این را در Code Style
بخش " " تغییر دهید: 
Code style
تنظیمات " " را در اینجا بخوانید: " IDEA Help: Code Style
". یکی دیگر از ویژگی های قالب بندی مهم وجود دارد: قالب بندی واردات. این عملیات به صورت جداگانه اجرا می شود و " Optimize Imports
" نامیده می شود. در زیر (Ctrl+Alt+O) قرار دارد Code -> Optimize Imports
. بهینه سازی واردات، واردات غیر ضروری را حذف می کند و واردات را به ترتیب صحیح مطابق با تنظیمات موجود در Imports
برگه " Code Style
" تنظیمات جاوا مرتب می کند. علاوه بر این، اگر میخواهید این قالببندی به صورت خودکار انجام شود، یک خبر خوب وجود دارد: این کار را میتوان با استفاده از افزونه Save Actions
انجام داد .
توزیع تنظیمات در یک دستور
در بالا دیدیم که میتوانید سبک قالببندی خود را هر طور که بخواهید سفارشی کنید. اما چگونه می توان از این سبک در یک تیم استفاده کرد؟ خیلی راحت. چندین گزینه وجود دارد. ساده ترین کار این است که یک طرح سبک کد را ذخیره کنید. تنظیمات IDEA را با استفاده ازFile -> Settings
(یا فشار دادن Ctrl+Alt+S) باز کنید. در Code Style
بخش " "، می توانیم "طرح" را ببینیم. این طرح قالب بندی ما است. بهطور پیشفرض، طرح «پیشفرض» استفاده میشود و با برچسب «IDE» مشخص میشود، به این معنی که این تنظیم فقط برای IDE ما اعمال میشود – بر هیچکس دیگری تأثیر نمیگذارد. برای ایجاد یک طرح "سفارشی"، از دکمه سمت راست استفاده کنید تا یک کپی ایجاد کنید و نامی برای آن بگذارید، به عنوان مثال: CodeGym 


Browse Repositories
سپس افزونه Eclipse Code Formatter را در پنجره جستجو پیدا کنید. 

الزامات سخت تر
علاوه بر ابزارهای IDEA، میتوانید از افزونههای اتوماسیون ساخت نیز برای سختتر کردن الزامات استفاده کنید. هیچ راهی وجود ندارد که بتوانید به صورت دستی بررسی کنید که شخصی از قالب بندی مناسب استفاده کرده است. شاید بتوانید با 5 نفر در یک تیم. اما با وجود 100 نفر در یک شرکت، این واقع بینانه نیست. و حتی ردیابی پنج نفر نیز دشوار خواهد بود. و چرا وقت خود را برای هر یک از اینها تلف کنید؟ در صورت نقض قوانین، جلوگیری از ساخت پروژه بسیار ساده تر خواهد بود. در واقع، این یک موضوع کاملاً جداگانه است به نام "بازرسی کد". در این مقاله، من فقط می خواهم به شما نشان دهم که چگونه کار می کند. یکی از محبوب ترین پلاگین های Gradle (به خاطر می آورید که پروژه ما را می سازد) pmd است . برای فعال کردن آن، فقط به اسکریپت ساخت پروژه 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
: 
خط پایین
سبک کد برای به حداکثر رساندن بهره وری در یک پروژه مهم است. کد زیبا که بر اساس قوانین مشترک نوشته شده است تضمین می کند که همکاران شما راحت تر و سریع تر آن را درک می کنند و به شما انتقاد نمی کنند. با ابزارهای توسعه مدرن، پایبندی به قوانین سبک چندان سخت نیست. امیدوارم این بررسی به شما ثابت کرده باشد که این درست است. به پیروی از سنت، در اینجا مطالب اضافی کمی در مورد این موضوع وجود دارد:- ویدیو از JetBrainsTV: " Inspect Code (IntelliJ IDEA) "
- بررسی " تحلیل کد با پلاگین های Gradle "
- دوره آموزشی " کیفیت کد خودکار ".
GO TO FULL VERSION