"హాయ్, అమిగో! ఈ రోజు నేను మీకు కోడ్ స్టైల్స్ మరియు కోడ్ స్టైల్ యొక్క ప్రాముఖ్యత గురించి చెప్పబోతున్నాను."

"నేను చాలా ముఖ్యమైన వాటితో ప్రారంభిస్తాను.  జావా కోడ్ చదవడానికి సులభంగా ఉండాలి.  కోడ్‌కి సాధారణ విధానం ఇది: కోడ్ ఒకసారి వ్రాయబడింది కానీ వంద సార్లు చదవబడుతుంది."

"మీరు మరియు మరో 10 మంది ప్రోగ్రామర్లు అప్లికేషన్ వ్రాస్తున్నారని అనుకుందాం. మీరు ప్రతి మూడు నెలలకు ఇంటర్మీడియట్ విడుదలలతో మూడు సంవత్సరాల పాటు అప్లికేషన్‌పై పని చేస్తారు."

"అంత కాలం?"

"ఇది జావా, నా యువ గొల్లభామ! "ఒక డజను సర్వర్‌లపై నడుస్తున్న ఎంటర్‌ప్రైజ్ సిస్టమ్ మరియు 6 సంవత్సరాలకు పైగా 100 మంది వ్యక్తులచే వ్రాయడం ఎలా? ఇది కూడా కొన్నిసార్లు జరుగుతుంది."

"ఓహో."

"ఏమైనప్పటికీ, ప్రధాన నియమం, కోడ్ యొక్క ప్రధాన అవసరం ఏమిటంటే ఇతర డెవలపర్‌లు చదవడానికి సులభంగా ఉండాలి."

"ఇతర ప్రోగ్రామింగ్ లాంగ్వేజ్‌లలో, వ్యక్తులు తరచుగా చిన్న చిన్న పనులపై చిన్న బృందాలుగా పని చేస్తారు, కాబట్టి వారు 'ఇది పని చేస్తుందా? అద్భుతమైనది' వంటి మరొక ప్రధాన నియమాన్ని కలిగి ఉండవచ్చు."

"రెండు సంవత్సరాల వ్యవధిలో, మీ బృంద సభ్యులందరూ మీరు వ్రాసిన కోడ్‌కి అనేక మార్పులు చేస్తారు. మరియు ప్రతిసారీ వారు కోడ్ ఎలా పనిచేస్తుందో అర్థం చేసుకోవాలి."

"మరియు సంపూర్ణంగా పనిచేసే అపారమయిన కోడ్‌ని మార్చడం కష్టం.  వారు దానిని విస్మరించి, వారి స్వంత మార్గంలో తిరిగి వ్రాస్తారు.  కాబట్టి, ఇతరులు అర్థం చేసుకోగలిగే కోడ్‌ని వ్రాయండి.  మీరు మీ కోడ్‌ని మెరుగుపరచగలిగితే, దాన్ని మెరుగుపరచండి. దాన్ని మెరుగుపరచగలిగితే, అప్పుడు దాన్ని మెరుగుపరచాలి! "

"మీరు 15 నిమిషాలు కోడ్ వ్రాసి, దానిని మెరుగుపరచడానికి రెండు గంటలు వెచ్చిస్తే, మీరు సరిగ్గా చేస్తున్నారు. మీరు జట్టుకు ఎంత సమయం ఆదా చేస్తున్నారు?"

"'మీ కోడ్‌ని అర్థం చేసుకోవడానికి 2 గంటలు' x 'వ్యక్తులు అర్థం చేసుకోవలసిన 100 సార్లు' = 200 గంటలు."

"నేను ఈ బొమ్మలను గాలి నుండి బయటకు తీసాను, కానీ మీరు సమస్యను మరియు దాని పరిధిని అర్థం చేసుకోవాలని నేను కోరుకుంటున్నాను.  మీ కోడ్ ఇతర ప్రోగ్రామర్లు చదవడానికి సృష్టించబడింది.  మిగతావన్నీ ద్వితీయమైనవి."

"కోడ్ సరిగ్గా పని చేయలేదా? మేము దాన్ని పరిష్కరిస్తాము. ఆప్టిమైజ్ చేయలేదా? మేము దానిని ఆప్టిమైజ్ చేస్తాము. డాక్యుమెంట్ చేయలేదా? మేము వ్యాఖ్యలను జోడిస్తాము."

" కోడ్ చదవడం కష్టంగా ఉందా? ఆ చెత్తను చెత్తబుట్టలో పడేసి, అన్నింటినీ మళ్లీ మొదటి నుంచి రాయండి! "

"ఇది ఇంత పెద్ద విషయం అని నేను అనుకోలేదు."

"జావా ఒక ప్రముఖ ప్రోగ్రామింగ్ భాష కావడానికి ఒక కారణం ఏమిటంటే, అన్ని జావా కోడ్‌లు ఇతర ప్రోగ్రామర్లు చదవడానికి వ్రాయబడ్డాయి."

"ఇప్పుడు రెండవ ప్రశ్నకు వెళ్దాం: మీరు మీ కోడ్‌ని వీలైనంత సులభంగా చదవడానికి ఎలా చేస్తారు? "

"ఎవరైనా అతని లేదా ఆమె మాతృభాషలో తెలిసిన పదాలు మాట్లాడినప్పుడు ఎవరైనా అర్థం చేసుకోగలరు. ఇక్కడ కూడా అదే నిజం. ప్రోగ్రామర్ సులభంగా ఊహించగలిగినప్పుడు కోడ్ చదవడం సులభం:

ఎ)  ప్రతి పద్ధతి ఏమి చేస్తుంది

బి)  ప్రతి తరగతి ప్రయోజనం

సి)  ప్రతి వేరియబుల్ ఖచ్చితంగా ఏమి నిల్వ చేస్తుంది.

ఇవన్నీ పేర్లలో తెలియజేయబడతాయి: తరగతి పేర్లు, పద్ధతి పేర్లు మరియు వేరియబుల్ పేర్లు. అదనంగా, వేరియబుల్స్ పేరు పెట్టేటప్పుడు శైలి ఉంది. మరియు కోడ్ శైలి ఉంది."

"నేను వినడానికి సిద్ధంగా ఉన్నాను."

" ప్రోగ్రామింగ్ మంచి ఇంగ్లీషుపై ఆధారపడి ఉంటుంది!  బాగా వ్రాసిన ప్రోగ్రామ్ సాధారణ సాంకేతిక డాక్యుమెంటేషన్ లాగా చదవబడుతుంది. "

" పేర్లతో ప్రారంభిద్దాం. "

"మెథడ్ పేరు క్లుప్తంగా పద్దతి ఏమి చేస్తుందో వివరించాలి. అప్పుడు కోడ్ సాధారణ గద్యం వలె చదవబడుతుంది."

కార్యక్రమం
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;
}

"అటువంటి ప్రోగ్రామ్ ఎలా చదవబడుతుందో ఇక్కడ ఉంది."

లైన్ 1.

"ఈ పద్ధతిని 'డౌన్‌లోడ్ ఫోటో' అని పిలుస్తారు. ఇది ఇంటర్నెట్ నుండి ఫోటో ఫైల్‌ను డౌన్‌లోడ్ చేస్తున్నట్లు కనిపిస్తోంది. ఇది ఎక్కడ డౌన్‌లోడ్ అవుతుంది? మాకు ఇంకా తెలియదు. ఎక్కడ నుండి? ఈ పద్ధతికి url అనే పారామీటర్ ఉంది — ఇది బహుశా URL కావచ్చు డౌన్‌లోడ్."

లైన్ 3.

"TempHelper.createTempFileName() ద్వారా వేరియబుల్ రిజల్ట్‌ఫైల్‌నేమ్ ప్రకటించబడింది మరియు విలువను కేటాయించింది."

కాబట్టి ఇది తప్పనిసరిగా మన డౌన్‌లోడ్ చేసిన ఫైల్‌ను సేవ్ చేసే ఫైల్‌కి స్థానిక మార్గం అయి ఉండాలి.

"TempHelper' అనే పేరు మాకు ఏమీ చెప్పదు. 'Helper' ప్రత్యయం ఇది ఒక రకమైన యుటిలిటీ క్లాస్ అని చెబుతుంది, ఇది ముఖ్యమైన వ్యాపార లాజిక్‌లను కలిగి ఉండదు, కానీ తరచుగా జరిగే రొటీన్ టాస్క్‌లను సులభతరం చేయడానికి ఉపయోగించబడుతుంది."

"'createTempFileName' పద్ధతి పేరు ఈ పద్ధతి తాత్కాలిక ఫైల్ (టెంప్ ఫైల్) పేరును సృష్టిస్తుంది మరియు తిరిగి ఇస్తుంది అని సూచిస్తుంది. టెంప్ ఫైల్ అనేది తాత్కాలిక ఫైల్, ఇది కొంతకాలం సృష్టించబడుతుంది మరియు ప్రోగ్రామ్ మూసివేయబడిన సమయానికి సాధారణంగా తొలగించబడుతుంది. "

లైన్ 5.

"SingleFileDownloader ఆబ్జెక్ట్ సృష్టించబడింది మరియు వేరియబుల్ డౌన్‌లోడర్‌కు కేటాయించబడింది."

ఇది ఇంటర్నెట్ నుండి మన ఫైల్‌ను డౌన్‌లోడ్ చేసే వస్తువు.

"ఒక SingleFileDownloader ఆబ్జెక్ట్ వేరియబుల్ డౌన్‌లోడర్‌కు కేటాయించబడింది. పేరును బట్టి, ప్రోగ్రామ్‌లో అనేక రకాల డౌన్‌లోడ్ తరగతులు ఉన్నాయని మేము భావించవచ్చు. ఒకటి సింగిల్ ఫైల్‌లను డౌన్‌లోడ్ చేయడం కోసం వ్రాయబడింది మరియు సమూహాల కోసం కోడ్‌లో ఇతర డౌన్‌లోడ్‌లను ఎదుర్కోవచ్చని మేము ఆశించవచ్చు. పేర్లతో ఉన్న ఫైల్‌లు: MultiFileDownloader, FileGroupDownloader లేదా DirectoryDownloader"

లైన్ 6.

"మేము డౌన్‌లోడ్ చేసే ఆబ్జెక్ట్ యొక్క రిజల్ట్‌ఫైల్‌నేమ్ ప్రాపర్టీని వేరియబుల్ రిజల్ట్‌ఫైల్‌నేమ్ విలువకు సమానంగా సెట్ చేసాము. మరో మాటలో చెప్పాలంటే, డౌన్‌లోడ్ చేసిన ఫైల్‌ను ఎక్కడ సేవ్ చేయాలో లోడర్‌కి మేము చెబుతాము. మీరు ఊహించినట్లుగా. కాబట్టి, మేము ప్రాథమికంగా కోడ్‌ని అంచనా వేస్తున్నాము!"

లైన్ 7.

"మేము ప్రారంభ పద్ధతిని పిలుస్తాము. డౌన్‌లోడ్ ప్రారంభమవుతుంది. అది అర్ధమే. డౌన్‌లోడ్ ఎలా జరుగుతుందో నేను ఆశ్చర్యపోతున్నాను: భాగాలుగా, ప్రత్యేక థ్రెడ్‌లో లేదా మొత్తం ఇక్కడే? మేము మొత్తం ఇక్కడే డౌన్‌లోడ్ చేస్తే, దీనికి ఒక సమయం పట్టవచ్చు. చాలా కాలం మరియు పరిణామాలు ఉన్నాయి."

లైన్లు 8-11.

"ఆహ్. డౌన్‌లోడ్ పూర్తయ్యే వరకు ఎవరైనా వ్రాసిన ప్రామాణిక లూప్ ఇక్కడ మనకు కనిపిస్తుంది. డౌన్‌లోడ్ చేసిన ఆబ్జెక్ట్ పూర్తి చేసిన ఆస్తిని కలిగి ఉంది, ఇది isDone() పద్ధతి ద్వారా తిరిగి ఇవ్వబడుతుంది. ఎందుకంటే ఈ పద్ధతిని getDone() కంటే isDone() అంటారు. ), మేము పూర్తి చేసిన వేరియబుల్ బూలియన్ లేదా బహుశా బూలియన్ అని నిర్ధారించాము."

లైన్లు 13-14.

"డౌన్‌లోడ్ సమయంలో లోపం సంభవించినట్లయితే, డౌన్‌లోడ్‌ఫోటో పద్ధతి శూన్యతను అందిస్తుంది. ఇది లోపాలను నిర్వహించడం మంచిది. ఇది కేవలం శూన్యతను తిరిగి ఇవ్వడం చెడ్డది-ఎర్రర్ ఏమిటో స్పష్టంగా తెలియదు. దీని గురించి సమాచారంతో మినహాయింపును విసిరేయడం మంచిది. లోపం."

లైన్ 16.

"డౌన్‌లోడ్ చేసిన ఫైల్‌ను కలిగి ఉన్న స్థానిక ఫైల్‌కు మేము మార్గాన్ని తిరిగి ఇస్తాము."

"అయ్యో!"

"ఈ ప్రోగ్రామ్ యొక్క కోడ్ అది ఏమి చేస్తుందో ఖచ్చితంగా స్పష్టంగా తెలియజేస్తుంది. ప్రోగ్రామ్ ఎలా నిర్వహించబడుతుందో మరియు మేము ఏ ఇతర తరగతులు/పద్ధతులను కనుగొంటాము అనే దాని గురించి కూడా మీరు అంచనా వేయవచ్చు."

"పేర్లు ఎంత ముఖ్యమైనవో ఇప్పుడు నాకు అర్థమైంది."

"పేర్ల గురించి మరింత. మీరు తరచుగా ఆబ్జెక్ట్/క్లాస్ ఏ పద్ధతులను కలిగి ఉందో ఊహించవచ్చు. ఉదాహరణకు, ఒక వస్తువు సేకరణ అయితే, మూలకాల సంఖ్యను పొందడానికి అది పరిమాణం() లేదా కౌంట్() పద్ధతిని కలిగి ఉంటుంది. అలాగే , ఇది బహుశా యాడ్() లేదా ఇన్సర్ట్() పద్ధతిని కలిగి ఉండవచ్చు. గెట్/గెట్ ఐటెమ్/గెట్ ఎలిమెంట్ పద్ధతులను ఉపయోగించి ఎలిమెంట్స్ సేకరణ తరగతుల నుండి తిరిగి పొందబడతాయి."

"ఒక వేరియబుల్‌ను i, j, లేదా k అని పిలిస్తే, అది చాలా మటుకు లూప్ కౌంటర్ అవుతుంది."

"ఒక వేరియబుల్‌ను m లేదా n అని పిలిస్తే, అది చాలా మటుకు అర్రే/సేకరణ పరిమాణంగా ఉంటుంది."

"ఒక వేరియబుల్ పేరు అని పిలిస్తే, అది ఒకరి పేరు ఉన్న స్ట్రింగ్ కావచ్చు."

"ఒక తరగతిని FileInputStream అని పిలిస్తే, అది ఏకకాలంలో ఫైల్ మరియు ఇన్‌పుట్ స్ట్రీమ్ అవుతుంది."

"మీకు ఎంత ఎక్కువ కోడ్ కనిపిస్తే, ఇతరుల కోడ్‌ని చదవడం అంత సులభం."

"కానీ కొన్నిసార్లు చదవడానికి చాలా కష్టంగా ఉండే కోడ్ ఉంటుంది. ఈ సందర్భంలో, ఇక్కడ చాలా ఆచరణాత్మకమైన సలహా ఉంది:"

చిట్కా
మీరు ఎక్కడ నివసిస్తున్నారో తెలిసిన హింసాత్మక మానసిక రోగి చేత నిర్వహించబడుతున్నట్లుగా కోడ్ వ్రాయండి .

"ఇది ఫన్నీ మరియు అదే సమయంలో ఫన్నీ కాదు."

"ఇప్పుడు వేరియబుల్స్ పేరు పెట్టడానికి ఉపయోగించే స్టైల్స్ గురించి కొంచెం."

"జావా డెవలపర్‌లు వేరియబుల్స్ మరియు మెథడ్స్‌కు అత్యంత ఇన్ఫర్మేటివ్ పేర్లను ఇవ్వడానికి ప్రయత్నిస్తారు. ఫలితంగా, పేర్లు తరచుగా అనేక పదాలను కలిగి ఉంటాయి. సమ్మేళనం పేర్ల క్యాపిటలైజేషన్ కోసం 4 శైలులు ఉన్నాయి."

1) చిన్న అక్షరం  - అన్ని పదాలు చిన్న అక్షరాలతో వ్రాయబడ్డాయి. ఉదాహరణకి:

'గ్రీన్‌హౌస్' 'గ్రీన్‌హౌస్'గా  మారింది

'హాలీవుడ్ అమ్మాయి' 'హాలీవుడ్ గర్ల్'గా  మారింది 

ఈ శైలి ప్యాకేజీ పేర్ల కోసం ఉపయోగించబడుతుంది.

2) పెద్ద అక్షరం  - అన్ని పదాలు పెద్ద అక్షరాలతో వ్రాయబడతాయి మరియు అండర్ స్కోర్ ద్వారా వేరు చేయబడతాయి. ఉదాహరణకి:

'గరిష్ట విలువ' MAX_VALUE  అవుతుంది

'పిల్లుల సంఖ్య' CAT_COUNT  అవుతుంది

"ఈ శైలి స్థిరాంకాల పేర్లకు (చివరి స్టాటిక్ ఫీల్డ్‌లు) ఉపయోగించబడుతుంది."

3) ఒంటెకేస్  - ప్రతి పదంలోని మొదటి అక్షరం పెద్ద అక్షరం తప్ప, అన్ని పదాలు చిన్న అక్షరాలతో వ్రాయబడ్డాయి. ఉదాహరణకి:

'గ్రీన్ హౌస్' 'గ్రీన్ హౌస్'గా  మారింది 

'హాలీవుడ్ అమ్మాయి' 'హాలీవుడ్ గర్ల్'గా  మారింది

ఈ శైలి తరగతులు మరియు ఇంటర్‌ఫేస్‌ల పేర్లకు ఉపయోగించబడుతుంది.

4) లోయర్ కామెల్‌కేస్ (మిక్స్డ్ కేస్)  - అన్ని పదాలు చిన్న అక్షరాలను ఉపయోగించి వ్రాయబడతాయి, మొదటిది పెద్ద అక్షరం తప్ప ప్రతి పదంలోని మొదటి అక్షరం తప్ప. ఉదాహరణకి:

'వెడల్పు పొందండి' అనేది 'getWidth' అవుతుంది

'గెట్ హాలీవుడ్ అమ్మాయి పేరు' 'గెట్ హాలీవుడ్ గర్ల్ నేమ్' అవుతుంది 

"ఈ శైలి వేరియబుల్స్ మరియు పద్ధతుల పేర్ల కోసం ఉపయోగించబడుతుంది."

"కాబట్టి, చాలా నియమాలు లేవు."

1)  ప్రతిదీ లోయర్ కేమెల్‌కేస్‌లో వ్రాయబడింది.

2)  తరగతుల పేర్లు మరియు ఇంటర్‌ఫేస్‌లు ఎల్లప్పుడూ పెద్ద అక్షరాలతో ఉంటాయి.

3)  ప్యాకేజీ పేర్లు ఎల్లప్పుడూ చిన్న అక్షరాలతో ఉంటాయి.

4)  స్థిరాంకాలు ఎల్లప్పుడూ పెద్ద అక్షరం.

"అక్కడ కొన్ని సూక్ష్మ నైపుణ్యాలు ఉన్నాయి, కానీ సాధారణంగా అది అదే."

"ఇప్పుడు పద్ధతుల గురించి.  "పద్ధతి పేర్లు దాదాపు ఎల్లప్పుడూ క్రియతో ప్రారంభమవుతాయి! 'కౌంట్' అనేది ఒక పద్ధతికి చెడ్డ పేరు. దీన్ని getCount() అని పిలవడం మంచిది. ఒక పద్ధతి ఆబ్జెక్ట్‌పై కొంత చర్యను చేస్తుంది:  స్టార్ట్‌డౌన్‌లోడ్ , అంతరాయం  , నిద్ర  , loadPirateMusic ."

"మీకు ఇప్పటికే తెలిసినట్లుగా, ఆబ్జెక్ట్ యొక్క లక్షణాలు/ఫీల్డ్‌లతో పని చేయడానికి గెట్టర్‌లు మరియు సెట్టర్‌లు ఉన్నాయి:  getName / setName , getCount / setCount , మొదలైనవి."

"బూలియన్‌లకు మాత్రమే మినహాయింపు ఉంది. బూలియన్‌లకు, గెటర్ పేర్లు 'is'ని ఉపయోగిస్తాయి, 'గెట్' కాదు, ఉదా isDone, isEmpty. ఈ విధంగా ఇది సాధారణ ప్రసంగానికి దగ్గరగా ఉంటుంది."

"రోజుకు 8 గంటలు కాకుండా రెండు గంటలు పని చేస్తే ఎలా? టెంప్ట్?"

"అవును!"

"మీరు ఎలా ఉండాలి. ఒక జూనియర్ జావా డెవలపర్ కోసం, ప్రాథమిక అవసరం జావా యొక్క బేసిక్స్ అంటే జావా కోర్ గురించి అద్భుతమైన అవగాహన."

"నాకు మరో ప్రశ్న ఉంది. మూలకాల సంఖ్యను పొందడానికి మనకు ఈ విభిన్న పద్ధతులు ఎందుకు ఉన్నాయి?"

తరగతి మూలకాల సంఖ్యను పొందే విధానం/ఆస్తి
స్ట్రింగ్ పొడవు ()
అమరిక పొడవు
అర్రేలిస్ట్ పరిమాణం ()
థ్రెడ్‌గ్రూప్ క్రియాశీల గణన ()

"మొదట, సెట్‌కౌంట్ / గెట్‌కౌంట్ వంటి అవసరాలు ఏర్పరచబడకముందే, జావా 20 సంవత్సరాల క్రితం కనుగొనబడింది మరియు 'సాధ్యమైనంత చిన్నదిగా చేయడానికి' సి భాష నుండి తీసుకోబడిన సాధారణ విధానం ఉంది."

"రెండవది, సెమాంటిక్స్ ఇక్కడ పాత్ర పోషిస్తుంది. శ్రేణి గురించి మాట్లాడేటప్పుడు, మేము దాని పొడవు గురించి మాట్లాడుతాము. సేకరణ గురించి మాట్లాడేటప్పుడు, మేము దాని పరిమాణం గురించి మాట్లాడుతాము."

"ఏమి ఆసక్తికరమైన పాఠం."

"నేను మీకు ఇంకా ఎక్కువ చెప్పాలనుకుంటున్నాను, కానీ మీకు ఒక్కసారిగా గుర్తు రాదని నేను భయపడుతున్నాను. చిన్న సేర్విన్గ్స్‌లో మీకు డిష్ చేయడం మంచిది."

"కానీ నేను కర్లీ బ్రాకెట్ల వినియోగానికి సంబంధించి శైలిని టచ్ చేయాలనుకుంటున్నాను: {}. రెండు విధానాలు ఉన్నాయి:"

1)  బ్రాకెట్ ప్రతిసారీ కొత్త లైన్‌లో వెళుతుంది

2)  ఓపెనింగ్ బ్రాకెట్ మునుపటి పంక్తి చివరిలో వెళుతుంది, అయితే క్లోజింగ్ బ్రాకెట్ కొత్త లైన్‌లో వెళుతుంది. ఈ శైలిని 'ఈజిప్షియన్ జంట కలుపులు' అంటారు.

"నిజాయితీగా, మీరు కోడ్‌ను ఎలా ఎంచుకోవాలో ఎంచుకోవచ్చు. చాలా మంది వ్యక్తులు ఒకే లైన్‌లో ఓపెనింగ్ బ్రేస్‌ను ఉపయోగిస్తారు. చాలా మంది దానిని కొత్త లైన్‌లో ఉంచారు. ఇది గుడ్డు యొక్క ఏ చివరను పగలగొట్టాలనే దానిపై చర్చ వంటిది: చిన్నది లేదా పెద్దది ముగింపు."

"నేను సిఫార్సు చేయగల ఏకైక విషయం ఏమిటంటే, మీరు పని చేస్తున్న ప్రాజెక్ట్‌లో ఏ స్టైల్‌ని ఉపయోగిస్తున్నారో దానికి కట్టుబడి ఉండమని. మీరు ఇష్టపడే శైలికి సరిపోయేలా వేరొకరి కోడ్‌ని మార్చవద్దు.  వ్యక్తులు అసంపూర్ణంగా ఉన్నారు. నేను దీన్ని డాక్టర్ బిలాబోగా మీకు చెప్తున్నాను. "

"ఆసక్తికరమైన పాఠం అందించినందుకు ధన్యవాదాలు, బిలాబో. మీరు చెప్పిన దాని గురించి ఆలోచించడానికి నేను వెళ్తాను."