Салом ба ҳама, ҷомеаи JavaRush. Имрӯз мо дар бораи ислоҳкунӣ сӯҳбат хоҳем кард: ин чист ва чӣ гуна ислоҳ кардан дар Intellij IDEA. Мақола барои одамоне пешбинӣ шудааст, ки аллакай дар бораи Java Core маълумоти кам доранд. Барои нашри китобхонаҳо чаҳорчӯба ё равандҳои мураккаб вуҷуд надоранд. Роҳи осон. Пас, худро бароҳат ҳис кунед ва биёед оғоз кунем!
ҳуҷҷатҳои файли README, ки дар решаи лоиҳа ҷойгир аст, мо мехонем: рафтори интизорӣ - аз ҳама гулҳое, ки аз онҳо нектар ҷамъоварӣ карда мешавад (ҳамчун арзиши дукарата ), миқдори асал ба нисфи гарди ҷамъовардашуда. Лоиҳа дорои синфҳои зерин аст:
ҳуҷҷати файли README Навишта шудааст, ки нектар дар таносуби 2 ба 1 ба асал табдил меёбад:
ҳуҷҷати README хато дорад ва бояд навсозӣ шавад. Биёед файли README-ро навсозӣ кунем:
hub JavaRush бо назари оқилона идома диҳем :)
Чаро ба шумо Debug лозим аст?
Биёед фавран равшан кунем: бе хато code нест... Хаёт хамин тавр мегузарад. Аз ин рӯ, мо набояд фавран ланг шавем ва аз ҳама чиз даст кашем, агар code тавре ки мо интизор будем, кор накунад. Аммо чӣ бояд кард? Албатта, шумо метавонед онроSystem.out.println
дар ҳар ҷое, ки имконпазир аст, насб кунед ва сипас натиҷаро дар терминал ба тартиб оред, ба умеди он ки шумо хатогиро пайдо мекунед. Бо вуҷуди ин, ин имконпазир аст ... ва онҳо ин корро мекунанд, ва онҳо ин корро бодиққат бо истифода аз сабти ном (шумо метавонед дар ин ҷо хонед ). Аммо агар имконпазир бошад, ки codeро дар мошини маҳаллӣ иҷро кунед, беҳтар аст Debug -ро истифода баред . Дарҳол қайд кардан мехоҳам, ки дар ин мақола мо ислоҳи лоиҳаро дар дохor Intellij IDEA баррасӣ хоҳем кард. Агар шумо ба хондан дар бораи ислоҳи дурдаст таваҷҷӯҳ дошта бошед, дар ин ҷо мақола аз манбаи мост .
Debug чист
Debug раванди ислоҳи (тафтиш) code мебошад, ки ҳангоми иҷрои он шумо метавонед дар ҷои таъиншуда таваққуф карда, рафти иҷроишро тамошо кунед. Ҳолати барномаро дар ҷои муайян фаҳмед. Ин маҳз ҳамон тавре аст, ки агар шумо метавонед ҳаётро қатъ кунед ва ба ҳама чиз аз берун нигоҳ кунед. Хуб, дуруст? Ҳадафи мо ин аст, ки зуд ва ба осонӣ омӯхтани тарзи ислоҳи барномаҳоро бо истифода аз муҳити дӯстдоштаи таҳияи мо Intellij IDEA.Он чизе ки ба шумо лозим аст, ки ислоҳро оғоз кунед
Ман маслиҳати ройгон медиҳам: ҳангоми хондани мақола, ҳама чизеро, ки дар ин ҷо тавсиф мешавад, иҷро кунед, хушбахтона барои ин ҳама чиз вуҷуд дорад. Ба шумо чӣ лозим:- Нусхаи муҳити таҳияи Intellij IDEA 2019.3.1 ва навтар. Агар касе онро надошта бошад, дар ин ҷо пайванде ҳаст , ки шумо метавонед онро зеркашӣ кунед. Нашри Community -ро зеркашӣ кунед, зеро он чизест, ки ман истифода хоҳам кард.
- Лоиҳаро аз GitHub клон кунед ва онро тавассути IDEA ворид кунед.
Як назария... Ман ваъда медиҳам: D
Барои оғоз кардани ислоҳи каме, шумо бояд фаҳмед, ки breakPoint чист ва фаҳмед, ки чанд тугмаҳои hotkeys, ки шумо бояд оғоз кунед. BreakPoint як аломати махсусест, ки макон ё ҳолатеро нишон медиҳад, ки дар он барнома бояд қатъ карда шавад. Шумо метавонед нуқтаи танаффусро бо клики чапи чапи панели чап ё бо пахш кардани макони рамз ва пахш кардани Ctrl + F8 муқаррар кунед . Нуқтаҳои кандашавӣ дар се намуд меоянд: аломати хат, аломати тағирёбанда ва аломати метод. Чунин ба назар мерасад:-
Дар як сатр:
агар дар ифода ламбда мавҷуд бошад, пас IDEA ба шумо интихоби интихобро пешниҳод мекунад - ифодаро дар тамоми сатр ё махсусан дар ламбда гузоштан:
-
Ба як усул:
-
Дар як синф
- Bee.java:24 - дар синфи Bee дар хати 24
- Main.java:14 - дар синфи асосӣ дар сатри 14
Биё равем, биёед ба ваҳшӣ аз debug мешиканем
Азбаски ман занбӯрпарвари ирсӣ ҳастам, барои муаррифии ислоҳот ман лоиҳаеро таҳия кардам, ки раванди ҷамъоварӣ аз гарди занбӯри асал, коркарди гарди асал ва аз ќуттї гирифтани асалро тавсиф мекунад. Дар асоси- Занбур - занбӯри оддии коргарӣ;
- BeeQueen - занбӯри малика;
- занбӯри асал - занбӯри асал;
- HoneyPlant - растании асал, ки аз он асал ҷамъоварӣ мешавад;
- Асосӣ - дар куҷо
public static void main()
усуле, ки лоиҳа оғоз меёбад, ҷойгир аст.
main()
, маълум мешавад, ки на танҳо миқдори асал ҳисоб карда намешавад, балки хатогӣ низ пайдо мешавад... Шумо бояд бубинед, ки дар он ҷо чӣ хатост. Аз пайгирии стек дар кунҷи рости поён, мо мебинем, ки дар HoneyPlant.java:20
, RuntimeException партофта шудааст: Ин маҳз ҳолати мост: RuntimeException вуҷуд дорад, биёед ҷустуҷӯи чунин истисноро, тавре ки дар боло тавсиф шудааст, илова кунем ва main()
усулро дар ҳолати ислоҳ. Барои ин кор, пеш аз метод : тирчаи секунҷаи сабзро дар Intellij IDEA клик кунед main()
: ва мо барномаи қатъшударо дар лаҳзаи ба кор андохтани истисно бо ин нишона мегирем.Барои гирифтани маълумоти пурра, шумо бояд дар бахши Debug нигаред. Он дорои Variables мебошад , ки ҳамаи тағирёбандаҳои дар ин қисми барнома мавҷудбударо нишон медиҳад:
- нектар = 1,0;
- НектарИқтидори = -1,0.
if ( nectar == 0 ) {
return 0;
}
Аммо ҷолиб ин аст, ки он тағирёбандаи нодурустро тафтиш мекунад ... ва ин хато дар code аст. Ба ҷои санҷидани арзиши нектар дар гул, ки дар тағирёбандаи nectarCapacity аст , барнома арзиши нектарро месанҷад , ки ба усул ворид мешавад ва он миқдорест, ки онҳо аз гарди он гирифтан мехоҳанд. Ин аст, хатои аввалин! Бинобар ин, мо онро дуруст гузошта, чунин ифодаро мегирем:
if ( nectarCapacity == 0) {
return 0;
}
Баъдан, мо main()
усулро дар ҳолати муқаррарӣ иҷро мекунем (Run `Main.main()`)
ва дигар хато нест, барнома кор кард: Барнома кор кард ва ҷавоб дод: "33,0 асалро 7 занбӯр аз 2 растании асал истеҳсол кардааст" Ҳама чиз хуб мешуд, аммо ҷавоб ин аст. нодуруст... Ҳамааш барои он ки дар ## Documentation
Presentation based on honey getting process.
**Note**: 1 honey point = 2 nectar points
Аз усули асосй дида мешавад, ки ду растании асал, мутаносибан 30 ва 40 вохиди асал мавчуд аст, бинобар ин дар охир 35 вохиди асал гирифтан лозим аст. Ва менависад, ки 33. Ду агрегати дигар ба куҷо рафтанд?... Акнун мефаҳмем! Барои ин ба мо лозим аст, ки дар метод Main.main()
дар сатри № 28 нуқтаи қатъшавӣ гузорем, ки дар он ҷо иҷро карда мешавад beeHive.populateHoney()
ва main
методро дар реҷаи Debug иҷро кунем: Биёед ин нуқтаро бодиққат дида бароем. Барнома пеш аз иҷрои сатри 28 қатъ шуд. Дар поён мо бахши Debug -ро мебинем, ки тамоми маълумотро дар бораи замимаи иҷрошаванда тавсиф мекунад. Қисмати тағирёбандаҳо, тавре ки аллакай зикр гардид, дорои ҳама тағирёбандаҳо ва an objectҳое мебошад, ки аз ин қисми барнома дастрасанд. Қисми Frames қадамҳоеро нишон медиҳад, ки барнома аз он мегузарад, шумо метавонед ба қадами қаблӣ назар кунед ва ҳама маълумоти маҳаллиро гиред. Барои идомаи кор, шумо метавонед тугмаи F9 ё нишони сабзро пахш кунед, ки дар зер нишон дода шудааст: Барои қатъ кардани барнома, шумо бояд майдони сурхро клик кунед: Барои аз нав оғоз кардани барнома дар реҷаи дебаг, шумо бояд тирчаро пахш кунед: Баъдан, барои зина ба зина тавассути барнома гузаштан, шумо метавонед ду калидро истифода баред:
- F8 - аз қисмати code гузаред ва ба усулҳои дохилӣ дохил нашавед;
- F7 - аз қисмати code гузаред ва усулҳои дохorро ворид кунед.
beeHive.populateHoney()
, мо бояд F7-ро пахш кунем ва мо идома медиҳем: Баъдан, мо бо истифода аз ин усул то ба охир реҷаи дебагро бо истифода аз F8 мегузарем ва тавсиф мекунем, ки дар ин усул чӣ рӯй медиҳад:
- Хати 25 - Stream API барои ҷамъоварии асал аз ҳама занбӯрҳо истифода мешавад;
- хати 26 - асал ба мавҷуда илова карда мешавад;
- Рақами 27 - барои малика 2 воҳиди асал ҷудо карда шудааст;
- сатри 28 - ин ду адад аз миқдори умумии асал хориҷ карда мешавад;
- Хатти 29 - бачадон ин асалро мехӯрад.
## Documentation
Presentation based on honey getting process.
**Note**:
* 1 honey point = 2 nectar points
* 2 honey point queen bee eats every time when beehive populates the honey.
Ва ин аст: ҳама хатогиҳои ёфтшуда ислоҳ карда шуданд, мо метавонем оромона нӯшидани қаҳва ва хондани мақолаҳоро дар Ҷамъбаст кунед
Дар ин мақола мо фаҳмидем, ки:- кор бе хато нест ва ислоҳ кардан роҳи олии ҳалли онҳост;
- нуқтаи шикаст чист ва кадом намудҳо вуҷуд доранд;
- чӣ тавр танзим кардани нуқтаи қатъи истисно;
- Чӣ тавр дар реҷаи ислоҳот паймоиш кардан мумкин аст.
Мақола барои хондан
- Лоиҳае, ки дар мақола истифода шудааст
- IntelliJ IDEA ва Debug: на ғаввос, балки snorkeling
- Ҳақиқати талх дар бораи барномасозӣ...
- Ҳуҷҷатҳои расмӣ
- Намудҳои нуқтаҳо. Ҳуҷҷатҳои расмӣ
GO TO FULL VERSION