வணக்கம்! இன்றைய பாடம் மிக நீண்டதாக இருக்காது, ஆனால் அது நிச்சயமாக பயனுள்ளதாக இருக்கும் :) நாங்கள் மும்மை ஆபரேட்டர் என்று அழைக்கப்படுவதைப் பற்றி பேசப் போகிறோம் .
டெர்னரி என்றால் " மூன்று பகுதிகளால் ஆனது ".
நிபந்தனையைச் சுற்றி அடைப்புக்குறிகள் தேவையில்லை: அதிக வாசிப்புத்திறனுக்காக அவற்றைச் சேர்த்துள்ளோம். இது அவர்கள் இல்லாமல் வேலை செய்கிறது:
இது புரோகிராமர்களுக்கான சிறந்த நடைமுறைகள் மற்றும் பரிந்துரைகளை ஒன்றாகக் கொண்டுவருகிறது, இது செயல்பாட்டுக்கு மட்டுமல்லாமல், எளிதாகப் படிக்கக்கூடிய குறியீட்டை எழுத உதவும்.

if-else
நீங்கள் ஏற்கனவே சந்தித்த கட்டுப்பாட்டு ஓட்ட அறிக்கைக்கு இது மாற்றாகும் . ஒரு உதாரணம் தருவோம். R- தரமதிப்பீடு செய்யப்பட்ட திரைப்படத்திற்குச் செல்ல யாராவது முடிவு செய்ததாக வைத்துக்கொள்வோம் (17 வயதிற்குட்பட்டவர்கள் உடன் வரும் பெற்றோர் அல்லது வயதுவந்த பாதுகாவலர் தேவை). உஷார் வாசலில் அவரது வயதைச் சரிபார்க்கிறார்: அவர் வயது சரிபார்ப்பில் தேர்ச்சி பெற்றால், அவர் நுழைய அனுமதிக்கப்படுவார்; இல்லாவிட்டால் வீட்டுக்கு அனுப்பப்படுவார். ஒரு வகுப்பை அறிவித்து Person
, ஒரு அறிக்கையைப் பயன்படுத்தி இதைச் சரிபார்க்கலாம் if-else
:
public class Person {
private int age;
public Person(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static void main(String[] args) {
Person person = new Person(22);
String usherResponse;
if (person.getAge() >= 18) {
usherResponse = "Everything is in order. Come in!";
} else {
usherResponse = "This film is not suitable for your age!";
}
System.out.println(usherResponse);
}
}
கன்சோல் வெளியீடு:
"Everything is in order. Come in!"
கன்சோல் வெளியீட்டை அகற்றினால், எங்கள் காசோலை இப்படி இருக்கும்:
if (person.getAge() >= 18) {
usherResponse = "Everything is in order. Come in!";
} else {
usherResponse = "This film is not suitable for your age!";
}
தர்க்கம் இங்கே மிகவும் எளிமையானது: ஒரு நிபந்தனை சரிபார்க்கப்பட்டது (வயது >= 18) முடிவின் அடிப்படையில், மாறிக்கு usherResponse
உஷரின் பதிலுடன் இரண்டு சரங்களில் ஒன்று ஒதுக்கப்படுகிறது. இத்தகைய சூழ்நிலைகள் ("ஒரு நிபந்தனை - இரண்டு சாத்தியமான விளைவுகள்") நிரலாக்கத்தில் மிகவும் பொதுவானது. அதனால்தான் மும்முனை ஆபரேட்டர் உருவாக்கப்பட்டது. எங்கள் காசோலையை ஒரு ஒற்றை வரி குறியீட்டிற்கு எளிதாக்க இதைப் பயன்படுத்தலாம்:
public static void main(String[] args) {
Person person = new Person(22);
String usherResponse = (person.getAge() > 18) ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
System.out.println(usherResponse);
}
இந்த ஆபரேட்டர் எவ்வாறு செயல்படுகிறது என்பது இங்கே. இது 3 கூறுகளை உள்ளடக்கியதால், இது மும்மை ஆபரேட்டர் என்று அழைக்கப்படுகிறது:
- ஒரு நிபந்தனை (
person.getAge() > 18
) - இரண்டு சாத்தியமான முடிவுகள் ( "எல்லாம் ஒழுங்காக உள்ளது. உள்ளே வாருங்கள்!" மற்றும் "இந்தப் படம் உங்கள் வயதுக்கு ஏற்றதல்ல!" )
person.getAge() > 18 ?
"இந்த நபரின் வயது 18க்கு மேல் இருக்கிறதா?" பின்னர் முதல் மதிப்பை எழுதுகிறோம் . நிபந்தனை மதிப்பீடு செய்தால்true
இந்த மதிப்பு பயன்படுத்தப்படுகிறது :
String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!"
இந்த நபரின் வயது 18க்கு மேல் உள்ளதா? ஆம் எனில், மாறியை usherResponse
" எல்லாம் ஒழுங்காக உள்ளது. உள்ளே வாருங்கள்!" அடுத்து " :
" சின்னமும் இரண்டாவது மதிப்பும் வரும் . நிபந்தனை மதிப்பீடு செய்தால்false
இந்த மதிப்பு பயன்படுத்தப்படுகிறது :
String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
இந்த நபரின் வயது 18க்கு மேல் உள்ளதா? ஆம் எனில், மாறியை usherResponse
" எல்லாம் ஒழுங்காக உள்ளது. உள்ளே வாருங்கள்!" . இல்லை என்றால், "இந்தப் படம் உங்கள் வயதுக்கு ஏற்றதல்ல!"usherResponse
என்று மாறி அமைக்கவும். பொதுவாக, மும்மை ஆபரேட்டரின் தர்க்கம் எப்படி இருக்கும் என்பது இங்கே. நிலை ? விளைவு 1 : விளைவு 2 
public static void main(String[] args) {
Person person = new Person(22);
String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
System.out.println(usherResponse);
}
எனவே நீங்கள் எதைப் பயன்படுத்த வேண்டும்? ஒரு if-else
அறிக்கை அல்லது மும்முனை ஆபரேட்டர்? செயல்திறனைப் பொறுத்தவரை, எந்த வித்தியாசமும் இல்லை. இன்னும் துல்லியமாக, ஒருவேளை இருக்கலாம், ஆனால் அது முக்கியமற்றது. உங்கள் குறியீட்டின் வாசிப்புத்திறன்தான் இங்கு மிகப்பெரிய கருத்தாகும். நீங்கள் எழுதும் குறியீடு சரியாக வேலை செய்வது மட்டுமல்லாமல், படிக்க எளிதாகவும் இருக்க வேண்டும் . எல்லாவற்றிற்கும் மேலாக, இது மற்ற புரோகிராமர்கள், உங்கள் சகாக்களால் "பரம்பரையாக" இருக்கலாம்! புரிந்துகொள்வது கடினமாக இருந்தால், அது அவர்களின் மற்றும் உங்களுடைய வேலையை சிக்கலாக்கும் (ஒவ்வொரு 5 நிமிடங்களுக்கும் விளக்கங்களுக்காக அவர்கள் உங்களிடம் வருவார்கள்). பொதுவான பரிந்துரை இதுதான்: நிபந்தனை எளிமையானது மற்றும் எளிதாக சரிபார்க்கப்பட்டால், நீங்கள் தீங்கு விளைவிக்காமல் மும்மை ஆபரேட்டரைப் பயன்படுத்தலாம். இது குறியீட்டின் அளவையும் எண்ணிக்கையையும் குறைக்க உதவுகிறதுif-else
அறிக்கைகள் (அவை ஏற்கனவே நிறைய இருக்கலாம்). if-else
ஆனால் நிலைமை சிக்கலானது மற்றும் பல படிகளை உள்ளடக்கியிருந்தால், ஒரு அறிக்கையைப் பயன்படுத்துவது நல்லது . எடுத்துக்காட்டாக, ஒரு மும்முனை ஆபரேட்டரைப் பயன்படுத்துவது இந்த விஷயத்தில் மோசமான யோசனையாக இருக்கும்:
String usherResponse = (person.getAge() > 18 && (person.hasTicket() || person.hasCoupon()) && !person.hasChild()) ? "Come in!" : "You can't come in!";
இங்கே என்ன நடக்கிறது என்பது உடனடியாகத் தெரியவில்லை! குறியீடு படிக்க மிகவும் கடினமாகிவிட்டது . மற்றும் அனைத்து சிக்கலான நிலை காரணமாக:
- யாராவது 18 வயதுக்கு மேற்பட்டவராக இருந்தால், டிக்கெட் வைத்திருந்தால் (அல்லது இலவச பாஸ்) மற்றும் சிறு குழந்தைகள் இல்லை என்றால், அவர் உள்ளே வரலாம்.
- நிபந்தனையின் ஒரு பகுதி கூட பொய்யாக இருந்தால், அவரால் முடியாது.
if-else
. ஆம், எங்கள் குறியீடு பெரியதாக இருக்கும், ஆனால் அது நிறைய படிக்கக்கூடியதாக இருக்கும். உங்கள் சகாக்கள் இந்த குறியீட்டைப் பெற்றால் அவர்கள் உள்ளங்கையை எதிர்கொள்ள மாட்டார்கள் :) இறுதியாக, நான் உங்களுக்கு ஒரு நல்லதை பரிந்துரைக்க முடியும். பாடத்தின் போது குறியீடு வாசிப்புத் திறனைத் தொட்டோம். ராபர்ட் மார்ட்டினின் புத்தகம் "கிளீன் கோட்", இது ஒரு கிளாசிக் ஆனது, இந்த தலைப்புக்கு அர்ப்பணிக்கப்பட்டுள்ளது. 