c# - Better way to write if-else block -
i have following code (sample code) works well. think if there other better way can write following code snippet more accurately less code.
if(language == "english") { if(student_id == 0) { somefunction(); } else { if(getmarks(student_id) > 50 || subjectcount > 1 || projectcount > 0) { somefunction(); } } } also, please note if student_id 0, getmarks(student_id) throws error
(for more complex scenario, check out this)
what suggest case is:
to write less nested
if-elseblock- one way inverting conditions and
- gives early return whenever possible
to combine conditions same actions (in case being
somefunction)to exploit short circuit evaluation implemented in c# (also implemented in many other programming languages - noted martheen in comment).
if(language != "english") return; //assuming nothing below if(student_id == 0 || getmarks(student_id) > 50 || subjectcount > 1 || projectcount > 0) somefunction(); //if somefunction identical, can doneif have other languages checked or if have done independent actions based on
language == "english", however, should not return inif (language != "english")statement:if(language == "english") { if(student_id == 0 || getmarks(student_id) > 50 || subjectcount > 1 || projectcount > 0) somefunction(); //if somefunction identical, can done } //something else must done
edit (after question edited):
for additional condition, can put right after student_id == 0 because c# evaluate left if condition first (for || short circuit evaluation).
to illustrate: case, ok:
if(student_id == 0 || getmarks(student_id) > 50){ //if student_id == 0 true, getmarks(student_id) wouldn't evaluated } but not ok:
if(getmarks(student_id) > 50 || student_id == 0){ //if student_id 0, getmarks(student_id) throw exception before student_id == 0 evaluated }
Comments
Post a Comment