"Kumusta, Amigo! Ngayon sasabihin ko sa iyo ang tungkol sa mga istilo ng code at ang kahalagahan ng istilo ng code."

"Magsisimula ako sa kung ano ang pinakamahalaga.  Ang Java code ay dapat na madaling basahin.  Ang pangkalahatang diskarte sa code ay ito: ang code ay nakasulat nang isang beses ngunit binasa ng isang daang beses."

"Ipagpalagay na ikaw at ang 10 iba pang programmer ay sumusulat ng isang aplikasyon. Nagtatrabaho ka sa aplikasyon sa loob ng tatlong taon, na may mga intermediate na paglabas tuwing tatlong buwan."

"Gano'n katagal?"

"Ito ang Java, ang aking batang tipaklong! "Paano ang isang enterprise system na tumatakbo sa isang dosenang server at isinulat ng 100 tao sa loob ng higit sa 6 na taon? Nangyayari din yan minsan."

"Whoa."

"Gayunpaman, ang pangunahing panuntunan, ang pangunahing kinakailangan para sa code ay dapat na madali para sa ibang mga developer na basahin."

"Sa ibang mga programming language, ang mga tao ay madalas na nagtatrabaho bilang maliliit na koponan sa maliliit na gawain, kaya maaaring mayroon silang isa pang pangunahing panuntunan, tulad ng 'Ito ay gumagana? Napakahusay'."

"Sa paglipas ng ilang taon, lahat ng miyembro ng iyong team ay gagawa ng ilang pagbabago sa code na iyong isinulat. At sa bawat oras na kailangan nilang maunawaan kung paano gumagana ang code."

"At mahirap baguhin ang hindi maintindihang code na gumagana nang perpekto.  Itatapon nila ito at isusulat muli sa kanilang sariling paraan.  Kaya, sumulat ng code na mauunawaan ng iba.  Kung mapapabuti mo ang iyong code, pagkatapos ay pagbutihin ito. Kung maaari itong mapabuti, pagkatapos ay kailangan itong pagbutihin! "

"Kung sumulat ka ng code sa loob ng 15 minuto at pagkatapos ay gumugugol ng dalawang oras sa pagpapahusay nito, ginagawa mo ito ng tama. Gaano karaming oras ang ini-save mo sa koponan?"

"'2 oras upang maunawaan ang iyong code' x 'ang 100 beses kung kailan kakailanganin itong maunawaan ng mga tao' = 200 oras."

"Nakuha ko ang mga figure na ito mula sa manipis na hangin, ngunit gusto kong maunawaan mo ang problema at saklaw nito. Ang  iyong code ay nilikha upang mabasa ng ibang mga programmer.  Ang lahat ng iba ay pangalawa."

"Hindi ba gumagana nang tama ang code? Aayusin namin ito. Hindi na-optimize? I-optimize namin ito. Hindi dokumentado? Magdaragdag kami ng mga komento."

" Mahirap bang basahin ang code? Itapon mo ang kalokohan na iyan sa basurahan at isulat muli ang lahat mula sa simula! "

"Hindi ko akalain na ganito pala ka-big deal."

"Isa sa mga dahilan kung bakit ang Java ay isang nangungunang programming language ay ang lahat ng Java code ay isinulat upang basahin ng ibang mga programmer."

"Ngayon, lumipat tayo sa pangalawang tanong: paano mo gagawing madaling basahin ang iyong code hangga't maaari? "

"Maiintindihan ng sinuman kapag may nagsasalita ng pamilyar na mga salita sa kanyang sariling wika. Totoo rin dito. Madaling basahin ang code kapag madaling mahulaan ng programmer:

A)  Ano ang ginagawa ng bawat pamamaraan

B)  Ang layunin ng bawat klase

C)  Eksakto kung ano ang iniimbak ng bawat variable.

Ang lahat ng ito ay ipinapahayag sa mga pangalan: mga pangalan ng klase, mga pangalan ng pamamaraan, at mga pangalan ng variable. Bukod pa rito, may istilo pagdating sa pagbibigay ng pangalan sa mga variable. At may code style."

"Handa akong makinig."

" Ang programming ay batay sa mahusay na Ingles!  Ang isang mahusay na pagkakasulat na programa ay parang ordinaryong teknikal na dokumentasyon. "

" Magsimula tayo sa mga pangalan. "

"Ang pangalan ng pamamaraan ay dapat na maikli na naglalarawan kung ano ang ginagawa ng pamamaraan. Pagkatapos ay mababasa ang code tulad ng simpleng prosa."

Programa
public String downloadPhoto(String url)
{
 String resultFileName = TempHelper.createTempFileName();

 Downloader downloader = new SingleFileDownloader(new Url(url));
 downloader.setResultFileName(resultFileName)
 downloader.start();
 while(downloader.isDone())
 {
  Thread.sleep(1000);
 }

 if (downloader.hasError())
  return null;

 return resultFileName;
}

"Narito kung paano binabasa ang naturang programa."

Linya 1.

"Ang pamamaraan ay tinatawag na 'downloadPhoto'. Tila nagda-download ito ng isang file ng larawan mula sa Internet. Saan ito nagda-download? Hindi pa namin alam. Mula saan? Ang pamamaraan ay may isang parameter na pinangalanang url — malamang na iyon ang URL para sa ang pag-download."

Linya 3.

"Ang variable na resultaFileName ay idineklara at itinalaga ng isang halaga ng TempHelper.createTempFileName();"

Kaya ito dapat ang lokal na landas patungo sa file kung saan namin ise-save ang aming na-download na file.

"Ang pangalang 'TempHelper' ay walang sinasabi sa amin. Ang 'Helper' suffix ay nagsasabi na ito ay isang uri ng utility class na hindi naglalaman ng mahalagang lohika ng negosyo, ngunit sa halip ay ginagamit upang pasimplehin ang mga nakagawiang gawain na madalas mangyari."

"Ang pangalan ng pamamaraan na 'createTempFileName' ay nagpapahiwatig na ang paraang ito ay lumilikha at nagbabalik ng pangalan ng isang pansamantalang file (temp file). Ang isang temp file ay isang pansamantalang file na nilikha sa loob ng ilang sandali at pagkatapos ay karaniwang tinatanggal sa oras na ang programa ay sarado. "

Linya 5.

"Ang isang SingleFileDownloader object ay ginawa at itinalaga sa variable na downloader."

Ito ang bagay na magda-download ng aming file mula sa Internet.

"Ang isang bagay na SingleFileDownloader ay itinalaga sa variable na downloader. Mula sa pangalan, maaari nating ipagpalagay na ang program ay may ilang mga uri ng mga klase ng downloader. Ang isa ay isinulat para sa pag-download ng mga solong file, at maaari nating asahan na makatagpo ng iba pang mga downloader sa code para sa mga grupo ng mga file na may mga pangalan tulad ng: MultiFileDownloader, FileGroupDownloader, o DirectoryDownloader"

Linya 6.

"Itinakda namin ang property ng resultFileName ng downloader object na katumbas ng value ng variable resultFileName. Sa madaling salita, sinasabi namin sa loader kung saan ise-save ang na-download na file. Gaya ng iyong inaasahan. Kaya, karaniwang hinuhulaan namin ang code!"

Linya 7.

"Tinatawag namin ang paraan ng pagsisimula. Magsisimula ang pag-download. Makatuwiran iyon. Nagtataka ako kung paano nangyayari ang pag-download: sa mga bahagi, sa isang hiwalay na thread, o ang buong bagay dito mismo? Kung ida-download namin ang buong bagay dito mismo, maaaring tumagal ng isang mahabang panahon at may mga kahihinatnan."

Linya 8-11.

"Ah. Dito nakikita natin ang karaniwang loop na isinulat ng isang taong naghihintay na matapos ang pag-download. Ang bagay ng downloder ay may tapos na pag-aari, na ibinalik ng isDone() na pamamaraan. Dahil ang pamamaraan ay tinatawag na isDone(), sa halip na getDone( ), napagpasyahan namin na ang tapos na variable ay isang boolean o marahil ay isang Boolean."

Linya 13-14.

"Kung may naganap na error sa panahon ng pag-download, ang paraan ng pag-downloadPhoto ay nagbabalik ng null. Mabuti na pinangangasiwaan nito ang mga error. Masama na nagbabalik lamang ito ng null-hindi malinaw kung ano ang error. Mas mainam na maghagis ng exception na may impormasyon tungkol sa ang pagkakamali."

Linya 16.

"Ibinabalik namin ang landas sa lokal na file na naglalaman ng na-download na file."

"Whoa!"

"Ang code ng program na ito ay ginagawang ganap na malinaw kung ano ang ginagawa nito. Maaari ka ring gumawa ng mga hula tungkol sa kung paano nakaayos ang programa at kung ano ang iba pang mga klase/pamamaraan ang makikita namin."

"Ngayon naiintindihan ko na kung gaano kahalaga ang mga pangalan."

"Higit pa tungkol sa mga pangalan. Madalas mong mahulaan kung aling mga pamamaraan mayroon ang isang bagay/klase. Halimbawa, kung ang isang bagay ay isang koleksyon, malamang na magkakaroon ito ng sukat() o count() na paraan upang makuha ang bilang ng mga elemento. Gayundin , malamang na magkakaroon ito ng add() o insert() na paraan. Ang mga elemento ay kinukuha mula sa mga klase ng koleksyon gamit ang get/getItem/getElement na pamamaraan."

"Kung ang isang variable ay tinatawag na i, j, o k, kung gayon ito ay malamang na isang loop counter."

"Kung ang isang variable ay tinatawag na m o n, kung gayon ito ay malamang na ang laki ng isang array/collection."

"Kung ang isang variable ay tinatawag na pangalan, kung gayon ito ay malamang na isang String na naglalaman ng pangalan ng isang tao."

"Kung ang isang klase ay tinatawag na FileInputStream, pagkatapos ito ay sabay-sabay na isang file at isang input stream."

"Kung mas maraming code ang nakikita mo, mas madaling basahin ang code ng iba."

"Ngunit minsan may code na napakahirap basahin. Sa kasong ito, narito ang isang napakapraktikal na payo:"

Tip
Sumulat ng code na parang pananatilihin ito ng isang marahas na psychopath na nakakaalam kung saan ka nakatira .

"Nakakatawa at hindi nakakatawa sa parehong oras."

"Ngayon ng kaunti tungkol sa mga estilo na ginamit upang pangalanan ang mga variable."

"Sinusubukan ng mga developer ng Java na magbigay ng mataas na impormasyon na mga pangalan sa mga variable at pamamaraan. Bilang resulta, ang mga pangalan ay kadalasang binubuo ng ilang salita. Mayroong 4 na istilo para sa paglalagay ng malaking titik ng mga pangalan ng tambalan."

1) Lowercase  - Lahat ng salita ay nakasulat gamit ang maliliit na titik. Halimbawa:

'Green house'  naging 'greenhouse'

'Hollywood girl'  naging  'hollywoodgirl'

Ginagamit ang istilong ito para sa mga pangalan ng package.

2) Malaking titik  - Ang lahat ng mga salita ay nakasulat na may malalaking titik at pinaghihiwalay ng isang salungguhit. Halimbawa:

Ang 'max na halaga'  ay nagiging MAX_VALUE

Ang 'bilang ng pusa'  ay nagiging CAT_COUNT

"Ginagamit ang istilong ito para sa mga pangalan ng mga constant (panghuling static na field)."

3) CamelCase  - Ang lahat ng mga salita ay nakasulat na may maliliit na titik, maliban sa unang titik ng bawat salita ay malaki. Halimbawa:

Ang 'Green House'  ay naging  'GreenHouse'

'Hollywood girl'  naging 'HollywoodGirl'

Ginagamit ang istilong ito para sa mga pangalan ng mga klase at interface.

4) Lower CamelCase (mixed case)  – Lahat ng salita ay isinusulat gamit ang maliliit na letra, maliban sa unang titik ng bawat salita maliban sa una ay uppercase. Halimbawa:

Ang 'Kumuha ng lapad' ay nagiging 'getWidth'

Ang 'Get Hollywood girl name' ay naging  'getHollywoodGirlName'

"Ginagamit ang istilong ito para sa mga pangalan ng mga variable at pamamaraan."

"So, wala masyadong rules."

1)  Lahat ay nakasulat sa Lower CamelCase.

2)  Palaging naka-capitalize ang mga pangalan ng mga klase at interface.

3)  Palaging lowercase ang mga pangalan ng package.

4)  Palaging uppercase ang mga Constant.

"Mayroong ilang mga nuances, ngunit sa pangkalahatan iyon ay kung ano ito."

"Ngayon tungkol sa mga pamamaraan.  "Ang mga pangalan ng pamamaraan ay halos palaging nagsisimula sa isang pandiwa! Ang 'count' ay isang masamang pangalan para sa isang pamamaraan. Mas mainam na tawagan itong getCount(). Ang isang paraan ay nagsasagawa ng ilang aksyon sa bagay:  startDownload , interrupt  , sleep  , loadPirateMusic ."

"Tulad ng alam mo na, may mga getter at setter para sa pagtatrabaho sa mga katangian/patlang ng isang bagay:  getName / setName , getCount / setCount , atbp."

"Ang tanging exception ay para sa mga boolean. Para sa mga boolean, ang mga pangalan ng getter ay gumagamit ng 'is', hindi 'get', hal. isDone, isEmpty. Sa paraang ito ay mas malapit ito sa ordinaryong pagsasalita."

"How about working for two hours a day instead of 8? Natukso?"

"Oo!"

"Gaya ng nararapat. Para sa isang junior Java developer, ang pangunahing kinakailangan ay isang mahusay na pag-unawa sa mga pangunahing kaalaman ng Java, ibig sabihin, Java Core."

"May isa pa akong tanong. Bakit mayroon tayong iba't ibang pamamaraan para sa pagkuha ng bilang ng mga elemento?"

Klase Paraan / ari-arian para sa pagkuha ng bilang ng mga elemento
String haba ()
Array haba
ArrayList laki ()
ThreadGroup aktibong Bilang ()

"Una sa lahat, ang Java ay naimbento higit sa 20 taon na ang nakakaraan, bago naitatag ang mga kinakailangan tulad ng setCount / getCount , at mayroong isang karaniwang diskarte na kinuha mula sa wikang C upang 'gawin itong maikli hangga't maaari'."

"Pangalawa, ang semantics ay gumaganap ng isang papel dito. Kapag pinag-uusapan ang isang array, pinag-uusapan natin ang haba nito. Kapag pinag-uusapan ang isang koleksyon, pinag-uusapan natin ang laki nito."

"Ano ang isang kawili-wiling aralin."

"Gusto kong sabihin sa iyo ang higit pa, ngunit natatakot ako na hindi mo maalala ang lahat ng ito nang sabay-sabay. Mas mabuting ibigay ito sa iyo sa maliliit na servings."

"Ngunit gusto kong hawakan ang istilo tungkol sa paggamit ng mga kulot na bracket: {}. Mayroong dalawang diskarte:"

1)  Ang bracket ay napupunta sa isang bagong linya sa bawat oras

2)  Ang pambungad na bracket ay napupunta sa dulo ng nakaraang linya, habang ang pagsasara ng bracket ay napupunta sa isang bagong linya. Ang istilong ito ay tinatawag na 'Egyptian braces'.

"Sa totoo lang, mapipili mo kung paano mag-code. Maraming tao ang gumagamit ng opening brace sa parehong linya. Maraming tao ang naglalagay nito sa isang bagong linya. Ito ay tulad ng debate kung aling dulo ng itlog ang mababasag: ang maliit na dulo o ang malaking wakas."

"Ang tanging bagay na maaari kong irekomenda ay manatili sa anumang istilo na ginagamit sa proyektong iyong ginagawa. Huwag baguhin ang code ng ibang tao upang tumugma sa iyong ginustong istilo.  Ang mga tao ay hindi perpekto. Sinasabi ko ito sa iyo bilang Doctor Bilaabo. "

"Salamat sa kawili-wiling aral, Bilaabo. Pupunta ako upang pagnilayan ang sinabi mo."