บางครั้งคำสั่ง no-op อาจทำให้โค้ดของคุณอ่านง่ายขึ้น
นั่นอาจเป็นเรื่องของความคิดเห็น แต่นี่คือตัวอย่าง สมมติว่าคุณได้สร้างฟังก์ชันที่ใช้งานได้โดยใช้ unix สองพา ธ จะคำนวณ 'เส้นทางการเปลี่ยนแปลง' ที่จำเป็นในการซีดีจากเส้นทางหนึ่งไปยังอีกเส้นทางหนึ่ง คุณวางข้อ จำกัด ในฟังก์ชันของคุณว่าพา ธ ทั้งสองต้องขึ้นต้นด้วย '/' หรือทั้งคู่ต้องไม่
function chgpath() {
# toC, fromC are the first characters of the argument paths.
if [[ "$toC" == / && "$fromC" == / ]] || [[ "$toC" != / && "$fromC" != / ]]
then
true # continue with function
else
return 1 # Skip function.
fi
นักพัฒนาบางรายต้องการลบ no-op ออก แต่นั่นหมายถึงการลบล้างเงื่อนไข:
function chgpath() {
# toC, fromC are the first characters of the argument paths.
if [[ "$toC" != / || "$fromC" == / ]] && [[ "$toC" == / || "$fromC" != / ]]
then
return 1 # Skip function.
fi
ตอนนี้ - ในความคิดของฉัน - มันไม่ชัดเจนนักจาก if-clause เงื่อนไขที่คุณต้องการข้ามการทำฟังก์ชัน หากต้องการกำจัด no-op และทำอย่างชัดเจนคุณต้องย้าย if-clause ออกจากฟังก์ชัน:
if [[ "$toC" == / && "$fromC" == / ]] || [[ "$toC" != / && "$fromC" != / ]]
then
cdPath=$(chgPath pathA pathB) # (we moved the conditional outside)
ดูดีขึ้น แต่หลายครั้งเราทำไม่ได้ เราต้องการให้ทำการตรวจสอบภายในฟังก์ชัน
แล้วสิ่งนี้เกิดขึ้นบ่อยแค่ไหน? ไม่บ่อยมาก. อาจจะปีละครั้งหรือสองครั้ง มันเกิดขึ้นบ่อยพอที่คุณควรตระหนักถึงมัน ฉันไม่อายที่จะใช้มันเมื่อฉันคิดว่ามันช่วยเพิ่มความสามารถในการอ่านรหัสของฉัน (โดยไม่คำนึงถึงภาษา)