"வணக்கம், அமிகோ! இன்று நான் உங்களுக்கு குறியீடு பாணிகள் மற்றும் குறியீட்டு பாணியின் முக்கியத்துவத்தைப் பற்றி சொல்லப் போகிறேன்."
"மிக முக்கியமானவற்றுடன் நான் தொடங்குகிறேன். ஜாவா குறியீடு படிக்க எளிதாக இருக்க வேண்டும். குறியீட்டிற்கான பொதுவான அணுகுமுறை இதுதான்: குறியீடு ஒரு முறை எழுதப்பட்டது, ஆனால் நூறு முறை படிக்கப்படுகிறது."
"நீங்களும் மற்ற 10 புரோகிராமர்களும் ஒரு விண்ணப்பத்தை எழுதுகிறீர்கள் என்று வைத்துக் கொள்வோம். மூன்று மாதங்களுக்கு ஒருமுறை இடைநிலை வெளியீடுகளுடன், மூன்று வருடங்கள் விண்ணப்பத்தில் வேலை செய்கிறீர்கள்."
"அவ்வளவு நேரம்?"
"இது ஜாவா, என் இளம் வெட்டுக்கிளி! "ஒரு நிறுவன அமைப்பு ஒரு டஜன் சேவையகங்களில் இயங்குகிறது மற்றும் 6 ஆண்டுகளுக்கும் மேலாக 100 பேர் எழுதியது எப்படி? அதுவும் சில நேரங்களில் நடக்கும்."
"ஐயோ."
"எப்படியும், முக்கிய விதி, குறியீட்டிற்கான முக்கிய தேவை என்னவென்றால், மற்ற டெவலப்பர்கள் படிக்க எளிதாக இருக்க வேண்டும்."
"மற்ற நிரலாக்க மொழிகளில், மக்கள் பெரும்பாலும் சிறிய பணிகளில் சிறிய குழுக்களாக வேலை செய்கிறார்கள், எனவே அவர்களுக்கு 'இது வேலை செய்கிறது? சிறந்தது' போன்ற மற்றொரு முக்கிய விதி இருக்கலாம்."
"இரண்டு வருடங்களில், உங்கள் குழு உறுப்பினர்கள் அனைவரும் நீங்கள் எழுதிய குறியீட்டில் பல மாற்றங்களைச் செய்வார்கள். மேலும் ஒவ்வொரு முறையும் குறியீடு எவ்வாறு செயல்படுகிறது என்பதை அவர்கள் புரிந்து கொள்ள வேண்டும்."
"மேலும் சரியாகச் செயல்படும் புரிந்துகொள்ள முடியாத குறியீட்டை மாற்றுவது கடினம். அவர்கள் அதை நிராகரித்துவிட்டு தங்கள் சொந்த வழியில் மீண்டும் எழுதுவார்கள். எனவே, மற்றவர்கள் புரிந்துகொள்ளக்கூடிய குறியீட்டை எழுதுங்கள். உங்களால் உங்கள் குறியீட்டை மேம்படுத்த முடிந்தால், அதை மேம்படுத்தவும். அதை மேம்படுத்த முடியும் என்றால், பின்னர் அதை மேம்படுத்த வேண்டும்! "
"நீங்கள் 15 நிமிடங்களுக்கு குறியீட்டை எழுதினால், அதை மேம்படுத்த இரண்டு மணிநேரம் செலவழித்தால், நீங்கள் அதைச் சரியாகச் செய்கிறீர்கள். அணிக்கு எவ்வளவு நேரம் சேமிக்கிறீர்கள்?"
"உங்கள் குறியீட்டைப் புரிந்து கொள்ள 2 மணிநேரம்' x 'மக்கள் அதைப் புரிந்து கொள்ள வேண்டிய 100 முறை' = 200 மணிநேரம்."
"நான் இந்த புள்ளிவிவரங்களை மெல்லிய காற்றில் இருந்து வெளியே எடுத்தேன், ஆனால் நீங்கள் சிக்கலையும் அதன் நோக்கத்தையும் புரிந்து கொள்ள வேண்டும் என்று நான் விரும்புகிறேன். உங்கள் குறியீடு மற்ற புரோகிராமர்களால் படிக்க உருவாக்கப்பட்டது. மற்ற அனைத்தும் இரண்டாம் நிலை."
"குறியீடு சரியாக வேலை செய்யவில்லையா? அதை சரிசெய்வோம். மேம்படுத்தப்படவில்லையா? அதை மேம்படுத்துவோம். ஆவணப்படுத்தப்படவில்லையா? கருத்துகளைச் சேர்ப்போம்."
" குறியீடு படிக்க கடினமாக உள்ளதா? குப்பைத் தொட்டியில் எறிந்துவிட்டு, புதிதாக எல்லாவற்றையும் எழுதுங்கள்! "
"இது இவ்வளவு பெரிய விஷயமாக நான் நினைக்கவில்லை."
"ஜாவா ஒரு முன்னணி நிரலாக்க மொழியாக இருப்பதற்கான காரணங்களில் ஒன்று, அனைத்து ஜாவா குறியீடுகளும் பிற புரோகிராமர்கள் படிக்கும் வகையில் எழுதப்பட்டவை."
"இப்போது இரண்டாவது கேள்விக்கு செல்வோம்: உங்கள் குறியீட்டை முடிந்தவரை எளிதாக படிக்க எப்படி செய்வது? "
"யாராவது தனது சொந்த மொழியில் பழக்கமான வார்த்தைகளைப் பேசும்போது எவரும் புரிந்து கொள்ள முடியும். இங்கேயும் அதுவே உண்மை. ஒரு புரோகிராமர் எளிதில் யூகிக்கும்போது குறியீட்டைப் படிக்க எளிதானது:
அ) ஒவ்வொரு முறையும் என்ன செய்கிறது
B) ஒவ்வொரு வகுப்பின் நோக்கம்
C) ஒவ்வொரு மாறியும் சரியாக என்ன சேமிக்கிறது.
இவை அனைத்தும் பெயர்களில் தெரிவிக்கப்படுகின்றன: வகுப்பு பெயர்கள், முறை பெயர்கள் மற்றும் மாறி பெயர்கள். கூடுதலாக, மாறிகளுக்கு பெயரிடும் போது பாணி உள்ளது. மற்றும் குறியீடு பாணி உள்ளது."
"நான் கேட்க தயாராக இருக்கிறேன்."
" புரோகிராமிங் நல்ல ஆங்கிலத்தை அடிப்படையாகக் கொண்டது! நன்கு எழுதப்பட்ட நிரல் சாதாரண தொழில்நுட்ப ஆவணங்களைப் போன்றது. "
" பெயர்களுடன் ஆரம்பிக்கலாம். "
"ஒரு முறையின் பெயர் அந்த முறை என்ன செய்கிறது என்பதை சுருக்கமாக விவரிக்க வேண்டும். பின்னர் குறியீட்டை எளிய உரைநடை போல் படிக்கலாம்."
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.
"இந்த முறை 'downloadPhoto' என்று அழைக்கப்படுகிறது. இது இணையத்திலிருந்து புகைப்படக் கோப்பைப் பதிவிறக்குவது போல் தெரிகிறது. அது எங்கிருந்து பதிவிறக்குகிறது? எங்களுக்கு இன்னும் தெரியவில்லை. எங்கிருந்து? முறைக்கு url என்ற அளவுரு உள்ளது - அதுவே URL ஆக இருக்கலாம். பதிவிறக்கம்."
வரி 3.
"மாறி resultFileName அறிவிக்கப்பட்டது மற்றும் TempHelper.createTempFileName();"
எனவே இது நாம் பதிவிறக்கிய கோப்பைச் சேமிக்கும் கோப்பிற்கான உள்ளூர் பாதையாக இருக்க வேண்டும்.
"TempHelper' என்ற பெயர் நமக்கு எதையும் சொல்லவில்லை. 'உதவி' பின்னொட்டு இது ஒரு வகையான பயன்பாட்டு வகுப்பு என்று கூறுகிறது, இது முக்கியமான வணிக தர்க்கத்தைக் கொண்டிருக்கவில்லை, மாறாக அடிக்கடி நிகழும் வழக்கமான பணிகளை எளிமைப்படுத்தப் பயன்படுகிறது."
"createTempFileName' என்ற முறையின் பெயர், இந்த முறை ஒரு தற்காலிக கோப்பின் பெயரை (temp file) உருவாக்கி, திருப்பித் தருகிறது என்பதைக் குறிக்கிறது. தற்காலிக கோப்பு என்பது ஒரு தற்காலிக கோப்பாகும், அது சிறிது காலத்திற்கு உருவாக்கப்பட்டு, நிரல் மூடப்படும் நேரத்தில் வழக்கமாக நீக்கப்படும். "
வரி 5.
"SingleFileDownloader ஆப்ஜெக்ட் உருவாக்கப்பட்டு, மாறி டவுன்லோடருக்கு ஒதுக்கப்படுகிறது."
இதுவே நமது கோப்பை இணையத்திலிருந்து பதிவிறக்கம் செய்யும் பொருள்.
"ஒரு SingleFileDownloader ஆப்ஜெக்ட் மாறி டவுன்லோடருக்கு ஒதுக்கப்பட்டுள்ளது. பெயரில் இருந்து, நிரலில் பல வகையான டவுன்லோடர் வகுப்புகள் உள்ளன என்று நாம் கருதலாம். ஒன்று ஒற்றைக் கோப்புகளைப் பதிவிறக்குவதற்காக எழுதப்பட்டது, மேலும் குழுக்களுக்கான குறியீட்டில் மற்ற பதிவிறக்குபவர்களை சந்திக்கலாம் என எதிர்பார்க்கலாம். மல்டிஃபைல் டவுன்லோடர், ஃபைல் க்ரூப் டவுன்லோடர் அல்லது டைரக்டரி டவுன்லோடர் போன்ற பெயர்களைக் கொண்ட கோப்புகள்
வரி 6.
"டவுன்லோடர் பொருளின் resultFileName பண்பை நாங்கள் மாறி resultFileName இன் மதிப்புக்கு சமமாக அமைத்துள்ளோம். வேறுவிதமாகக் கூறினால், பதிவிறக்கம் செய்யப்பட்ட கோப்பை எங்கு சேமிக்க வேண்டும் என்பதை ஏற்றியிடம் கூறுகிறோம். நீங்கள் எதிர்பார்ப்பது போல. எனவே, நாங்கள் குறியீட்டை அடிப்படையில் கணிக்கிறோம்!"
வரி 7.
"தொடக்க முறையை நாங்கள் அழைக்கிறோம். பதிவிறக்கம் தொடங்குகிறது. அது அர்த்தமுள்ளதாக இருக்கிறது. பதிவிறக்கம் எப்படி நடக்கிறது என்று எனக்கு ஆச்சரியமாக இருக்கிறது: பகுதிகளாக, தனித் தொடரில் அல்லது முழு விஷயமும் இங்கேயே? முழுப் பொருளையும் இங்கேயே பதிவிறக்கம் செய்தால், அதற்கு ஒரு நேரம் ஆகலாம். நீண்ட நேரம் மற்றும் விளைவுகளை ஏற்படுத்தும்."
வரிகள் 8-11.
"ஆ. பதிவிறக்கம் முடிவடைவதற்காக யாரோ ஒருவர் எழுதிய ஸ்டாண்டர்ட் லூப்பைப் பார்க்கிறோம். டவுன்லோடர் ஆப்ஜெக்ட்டில் ஒரு முடிக்கப்பட்ட சொத்து உள்ளது, இது isDone() முறை மூலம் திரும்பப் பெறப்படுகிறது. ஏனெனில் அந்த முறை getDone() என்பதற்குப் பதிலாக isDone() என அழைக்கப்படுகிறது. ), செய்யப்பட்ட மாறி ஒரு பூலியன் அல்லது ஒருவேளை பூலியன் என்று முடிவு செய்கிறோம்."
வரிகள் 13-14.
"பதிவிறக்கத்தின் போது பிழை ஏற்பட்டால், பதிவிறக்கப் புகைப்பட முறையானது பூஜ்யமாகத் திரும்பும். பிழைகளைக் கையாள்வது நல்லது. பூஜ்யமாகத் தருவது மோசமானது - என்ன பிழை என்று தெளிவாகத் தெரியவில்லை பிழை."
வரி 16.
"பதிவிறக்கம் செய்யப்பட்ட கோப்பைக் கொண்ட உள்ளூர் கோப்பிற்கான பாதையை நாங்கள் திருப்பி விடுகிறோம்."
"ஐயோ!"
"இந்த நிரலின் குறியீடு அது என்ன செய்கிறது என்பதை முற்றிலும் தெளிவாக்குகிறது. நிரல் எவ்வாறு ஒழுங்கமைக்கப்பட்டுள்ளது மற்றும் பிற வகுப்புகள்/முறைகள் என்ன என்பதை நீங்கள் யூகிக்கலாம்."
"பெயர்கள் எவ்வளவு முக்கியம் என்பதை இப்போது நான் புரிந்துகொள்கிறேன்."
"பெயர்களைப் பற்றி மேலும். ஒரு பொருள்/வகுப்பு எந்தெந்த முறைகளைக் கொண்டுள்ளது என்பதை நீங்கள் அடிக்கடி யூகிக்கலாம். எடுத்துக்காட்டாக, ஒரு பொருள் ஒரு தொகுப்பாக இருந்தால், உறுப்புகளின் எண்ணிக்கையைப் பெற அது பெரும்பாலும் அளவு() அல்லது எண்ணிக்கை() முறையைக் கொண்டிருக்கும். மேலும் , இது ஒரு add() அல்லது insert() முறையைக் கொண்டிருக்கலாம். get/getItem/getElement முறைகளைப் பயன்படுத்தி சேகரிப்பு வகுப்புகளிலிருந்து கூறுகள் மீட்டெடுக்கப்படுகின்றன."
"ஒரு மாறி i, j, அல்லது k என்று அழைக்கப்பட்டால், அது பெரும்பாலும் லூப் கவுண்டராக இருக்கும்."
"ஒரு மாறி m அல்லது n என அழைக்கப்பட்டால், அது பெரும்பாலும் ஒரு வரிசை/சேகரிப்பு அளவாகும்."
"ஒரு மாறி பெயர் என்று அழைக்கப்பட்டால், அது பெரும்பாலும் ஒருவரின் பெயரைக் கொண்ட ஒரு சரமாக இருக்கும்."
"ஒரு வகுப்பு FileInputStream என அழைக்கப்பட்டால், அது ஒரே நேரத்தில் ஒரு கோப்பு மற்றும் உள்ளீட்டு ஸ்ட்ரீம் ஆகும்."
"நீங்கள் எவ்வளவு அதிகமான குறியீட்டைப் பார்க்கிறீர்களோ, அவ்வளவு எளிதாக மற்றவர்களின் குறியீட்டைப் படிப்பது."
"ஆனால் சில சமயங்களில் படிக்க மிகவும் கடினமாக இருக்கும் குறியீடு உள்ளது. இந்த விஷயத்தில், இங்கே மிகவும் நடைமுறை ஆலோசனை:"
உதவிக்குறிப்பு |
---|
நீங்கள் எங்கு வாழ்கிறீர்கள் என்பதை அறிந்த ஒரு வன்முறை மனநோயாளியால் அது பராமரிக்கப்படுவது போல் குறியீட்டை எழுதுங்கள் . |
"அது வேடிக்கையானது மற்றும் அதே நேரத்தில் வேடிக்கையானது அல்ல."
"இப்போது மாறிகள் பெயரிட பயன்படுத்தப்படும் பாணிகளைப் பற்றி கொஞ்சம்."
"ஜாவா டெவலப்பர்கள் மாறிகள் மற்றும் முறைகளுக்கு அதிக தகவல் தரும் பெயர்களைக் கொடுக்க முயற்சி செய்கிறார்கள். இதன் விளைவாக, பெயர்கள் பெரும்பாலும் பல சொற்களைக் கொண்டிருக்கின்றன. கூட்டுப் பெயர்களின் பெரியாக்கத்திற்கு 4 பாணிகள் உள்ளன."
1) சிற்றெழுத்து - அனைத்து சொற்களும் சிற்றெழுத்துக்களால் எழுதப்பட்டுள்ளன. உதாரணத்திற்கு:
'கிரீன் ஹவுஸ்' 'கிரீன்ஹவுஸ்' ஆகிறது
'ஹாலிவுட் பெண்' 'ஹாலிவுட் கேர்ள்' ஆனார்
இந்த பாணி தொகுப்பு பெயர்களுக்கு பயன்படுத்தப்படுகிறது.
2) பெரிய எழுத்து - அனைத்து வார்த்தைகளும் பெரிய எழுத்துகளால் எழுதப்பட்டு, அடிக்கோலால் பிரிக்கப்படுகின்றன. உதாரணத்திற்கு:
'அதிகபட்ச மதிப்பு' MAX_VALUE ஆகிறது
'பூனை எண்ணிக்கை' CAT_COUNT ஆகிறது
"இந்த பாணி மாறிலிகளின் பெயர்களுக்கு (இறுதி நிலையான புலங்கள்) பயன்படுத்தப்படுகிறது."
3) CamelCase - ஒவ்வொரு வார்த்தையின் முதல் எழுத்து பெரிய எழுத்து தவிர, அனைத்து வார்த்தைகளும் சிறிய எழுத்துக்களால் எழுதப்படுகின்றன. உதாரணத்திற்கு:
'கிரீன் ஹவுஸ்' ஆனது 'கிரீன்ஹவுஸ்'
'ஹாலிவுட் பெண்' 'ஹாலிவுட் கேர்ல்' ஆனார்
இந்த பாணி வகுப்புகள் மற்றும் இடைமுகங்களின் பெயர்களுக்குப் பயன்படுத்தப்படுகிறது.
4) லோயர் கேமல்கேஸ் (கலப்பு வழக்கு) - எல்லா வார்த்தைகளும் சிறிய எழுத்துக்களைப் பயன்படுத்தி எழுதப்படுகின்றன, முதல் எழுத்து தவிர ஒவ்வொரு வார்த்தையின் முதல் எழுத்தும் பெரிய எழுத்து. உதாரணத்திற்கு:
அகலத்தைப் பெறு' என்பது 'getWidth' ஆகிறது
'ஹாலிவுட் பெண் பெயரைப் பெறு' என்பது 'கெட் ஹாலிவுட் கேர்ல் நேம்' ஆகிறது.
"இந்த பாணி மாறிகள் மற்றும் முறைகளின் பெயர்களுக்குப் பயன்படுத்தப்படுகிறது."
"எனவே, அதிக விதிகள் இல்லை."
1) எல்லாம் லோயர் கேமல்கேஸில் எழுதப்பட்டுள்ளது.
2) வகுப்புகள் மற்றும் இடைமுகங்களின் பெயர்கள் எப்போதும் பெரியதாக இருக்கும்.
3) தொகுப்பு பெயர்கள் எப்போதும் சிற்றெழுத்து.
4) மாறிலிகள் எப்போதும் பெரிய எழுத்துகளாக இருக்கும்.
"இரண்டு நுணுக்கங்கள் உள்ளன, ஆனால் பொதுவாக அது தான்."
"இப்போது முறைகள் பற்றி. "முறையின் பெயர்கள் எப்போதும் வினைச்சொல்லுடன் தொடங்குகின்றன! 'கவுண்ட்' என்பது ஒரு முறைக்கு கெட்ட பெயர். அதை getCount() என்று அழைப்பது நல்லது. ஒரு முறை பொருளின் மீது சில செயல்களைச் செய்கிறது: பதிவிறக்கம் தொடங்கு , குறுக்கீடு , தூக்கம் , loadPirateMusic ."
"உங்களுக்கு ஏற்கனவே தெரியும், ஒரு பொருளின் பண்புகள்/புலங்களுடன் பணிபுரிய பெறுபவர்கள் மற்றும் அமைப்பாளர்கள் உள்ளனர்: getName / setName , getCount / setCount , போன்றவை."
"பூலியன்களுக்கு மட்டும் விதிவிலக்கு. பூலியன்களுக்கு, பெறுபவர் பெயர்கள் 'is' ஐப் பயன்படுத்துகின்றன, 'கெட்' அல்ல, எ.கா. isDone, isEmpty. இந்த வழியில் இது சாதாரண பேச்சுக்கு நெருக்கமானது."
"ஒரு நாளைக்கு 8 மணிநேரத்திற்குப் பதிலாக இரண்டு மணிநேரம் வேலை செய்வது எப்படி? ஆசையா?"
"ஆம்!"
"நீங்கள் இருக்க வேண்டும். ஒரு ஜூனியர் ஜாவா டெவலப்பருக்கு, அடிப்படைத் தேவை ஜாவாவின் அடிப்படைகளைப் பற்றிய சிறந்த புரிதல், அதாவது ஜாவா கோர்."
"எனக்கு இன்னொரு கேள்வி உள்ளது. தனிமங்களின் எண்ணிக்கையைப் பெறுவதற்கு ஏன் இந்த வெவ்வேறு முறைகள் உள்ளன?"
வர்க்கம் | உறுப்புகளின் எண்ணிக்கையைப் பெறுவதற்கான முறை/சொத்து |
---|---|
லேசான கயிறு | நீளம் () |
வரிசை | நீளம் |
வரிசைப்பட்டியல் | அளவு () |
நூல் குழு | செயலில் உள்ள எண்ணிக்கை () |
"முதலாவதாக, ஜாவா 20 ஆண்டுகளுக்கு முன்பு கண்டுபிடிக்கப்பட்டது, செட்கவுண்ட் / கெட்கவுண்ட் போன்ற தேவைகள் நிறுவப்படுவதற்கு முன்பு, மேலும் சி மொழியில் இருந்து 'முடிந்தவரை சுருக்கமாக' எடுக்கப்பட்ட பொதுவான அணுகுமுறை இருந்தது."
"இரண்டாவது, சொற்பொருள் இங்கே ஒரு பாத்திரத்தை வகிக்கிறது. ஒரு வரிசையைப் பற்றி பேசும்போது, அதன் நீளத்தைப் பற்றி பேசுகிறோம். ஒரு தொகுப்பைப் பற்றி பேசும்போது, அதன் அளவைப் பற்றி பேசுகிறோம்."
"என்ன ஒரு சுவாரஸ்யமான பாடம்."
"நான் உங்களுக்கு இன்னும் சொல்ல விரும்புகிறேன், ஆனால் நீங்கள் அதை ஒரேயடியாக நினைவில் வைத்துக் கொள்ள மாட்டீர்கள் என்று நான் பயப்படுகிறேன். சிறிய பரிமாணங்களில் அதை உங்களுக்கு வழங்குவது நல்லது."
"ஆனால் நான் சுருள் அடைப்புக்குறிகளைப் பயன்படுத்துவதைப் பற்றிய பாணியைத் தொட விரும்புகிறேன்: {}. இரண்டு அணுகுமுறைகள் உள்ளன:"
1) அடைப்புக்குறி ஒவ்வொரு முறையும் ஒரு புதிய வரியில் செல்கிறது
2) தொடக்க அடைப்புக்குறி முந்தைய வரியின் முடிவில் செல்கிறது, அதே நேரத்தில் மூடும் அடைப்புக்குறி புதிய வரியில் செல்கிறது. இந்த பாணி 'எகிப்திய பிரேஸ்கள்' என்று அழைக்கப்படுகிறது.
"உண்மையாக, எப்படி குறியீடு செய்வது என்பதை நீங்கள் தேர்வு செய்ய வேண்டும். பலர் ஒரே வரியில் திறப்பு வளையத்தைப் பயன்படுத்துகிறார்கள். பலர் அதை ஒரு புதிய வரியில் வைக்கிறார்கள். இது முட்டையின் எந்த முனையை உடைப்பது என்பது பற்றிய விவாதம் போன்றது: சிறிய முனை அல்லது பெரியது முடிவு."
"நான் பரிந்துரைக்கக்கூடிய ஒரே விஷயம் என்னவென்றால், நீங்கள் பணிபுரியும் திட்டத்தில் எந்த பாணியைப் பயன்படுத்துகிறீர்களோ, அதைக் கடைப்பிடிக்க வேண்டும். உங்களுக்கு விருப்பமான பாணியுடன் பொருந்துமாறு வேறொருவரின் குறியீட்டை மாற்ற வேண்டாம். மக்கள் அபூரணர்கள். இதை நான் டாக்டர் பிலாபோவாக உங்களுக்குச் சொல்கிறேன். "
"சுவாரஸ்யமான பாடத்திற்கு நன்றி, பிலாபோ. நீங்கள் சொன்னதைப் பற்றி சிந்திக்க நான் செல்கிறேன்."
GO TO FULL VERSION