ไม่ไม่มีหลักเกณฑ์มาตรฐาน
แต่มีเทคนิคบางอย่างที่สามารถทำให้ฟังก์ชั่นที่มีพารามิเตอร์จำนวนมากสามารถรับได้
คุณสามารถใช้พารามิเตอร์ list-if-args (args *) หรือพารามิเตอร์ dictionary-of-args (kwargs **
)
ตัวอย่างเช่นในไพ ธ อน:
// Example definition
def example_function(normalParam, args*, kwargs**):
for i in args:
print 'args' + i + ': ' + args[i]
for key in kwargs:
print 'keyword: %s: %s' % (key, kwargs[key])
somevar = kwargs.get('somevar','found')
missingvar = kwargs.get('somevar','missing')
print somevar
print missingvar
// Example usage
example_function('normal parameter', 'args1', args2,
somevar='value', missingvar='novalue')
ขาออก:
args1
args2
somevar:value
someothervar:novalue
value
missing
หรือคุณสามารถใช้ไวยากรณ์คำจำกัดความตัวอักษร
ตัวอย่างเช่นต่อไปนี้เป็นการเรียก JavaScript jQuery เพื่อเปิดใช้งานคำขอ AJAX GET:
$.ajax({
type: 'GET',
url: 'http://someurl.com/feed',
data: data,
success: success(),
error: error(),
complete: complete(),
dataType: 'jsonp'
});
หากคุณดูที่คลาส ajax ของ jQuery มีคุณสมบัติเพิ่มเติมมากมาย (ประมาณ 30) คุณสมบัติที่สามารถตั้งค่าได้ ส่วนใหญ่เป็นเพราะการสื่อสาร Ajax มีความซับซ้อนมาก โชคดีที่ไวยากรณ์ตัวอักษรของวัตถุทำให้ชีวิตง่ายขึ้น
C # intellisense ให้เอกสารที่ใช้งานของพารามิเตอร์ดังนั้นจึงไม่ใช่เรื่องแปลกที่จะเห็นการจัดเรียงที่ซับซ้อนมากของวิธีการโอเวอร์โหลด
ภาษาที่พิมพ์แบบไดนามิกเช่น python / javascript ไม่มีความสามารถดังกล่าวดังนั้นจึงเป็นเรื่องธรรมดามากที่จะเห็นอาร์กิวเมนต์ของคำหลักและคำจำกัดความตามตัวอักษรของวัตถุ
ฉันชอบคำจำกัดความตามตัวอักษรของวัตถุ ( แม้ใน C # ) สำหรับการจัดการวิธีการที่ซับซ้อนเพราะคุณสามารถดูได้อย่างชัดเจนว่าคุณสมบัติใดที่จะถูกตั้งค่าเมื่อวัตถุถูกยกตัวอย่าง คุณจะต้องทำงานอีกเล็กน้อยเพื่อจัดการกับอาร์กิวเมนต์เริ่มต้น แต่ในระยะยาวโค้ดของคุณจะสามารถอ่านได้มากขึ้น ด้วยคำจำกัดความตามตัวอักษรของวัตถุคุณสามารถทำลายการพึ่งพาเอกสารเพื่อเข้าใจว่าโค้ดของคุณกำลังทำอะไรในตอนแรก
IMHO วิธีการใช้งานมากเกินไปจะประเมินค่าสูงเกินไป
หมายเหตุ: ถ้าฉันจำได้ว่าการควบคุมการเข้าถึงแบบอ่านอย่างเดียวควรทำงานกับตัวสร้างออบเจ็กต์ตามตัวอักษรใน C # พวกมันทำงานเหมือนกับการตั้งค่าคุณสมบัติในนวกรรมิก
หากคุณไม่เคยเขียนโค้ดที่ไม่น่าสนใจใด ๆ ในภาษาจาวาสคริปต์ที่พิมพ์ได้แบบไดนามิก (python) และ / หรือการทำงาน / ต้นแบบภาษาจาวาสคริปต์ฉันขอแนะนำให้ลองทำดู มันสามารถเป็นประสบการณ์ที่ตรัสรู้
อาจเป็นเรื่องที่น่ากลัวเป็นอันดับแรกในการทำลายการพึ่งพาพารามิเตอร์สำหรับวิธีการเริ่มต้นทั้งหมดวิธีการเริ่มต้นฟังก์ชัน / วิธีทั้งหมด แต่คุณจะได้เรียนรู้การทำมากขึ้นด้วยรหัสของคุณโดยไม่ต้องเพิ่มความซับซ้อนที่ไม่จำเป็น
ปรับปรุง:
ฉันอาจจะได้ให้ตัวอย่างเพื่อแสดงให้เห็นถึงการใช้งานในภาษาที่พิมพ์แบบคงที่ แต่ฉันไม่ได้กำลังคิดในบริบทที่พิมพ์แบบคงที่ โดยทั่วไปฉันทำงานมากเกินไปในบริบทที่พิมพ์แบบไดนามิกเพื่อเปลี่ยนกลับในทันที
สิ่งที่ฉันไม่ทราบว่าเป็นวัตถุไวยากรณ์ความหมายที่แท้จริงจะสมบูรณ์ไปได้ในภาษาเตติก (อย่างน้อยใน C # และ Java) เพราะผมได้ใช้พวกเขาก่อนที่จะ ในภาษาที่พิมพ์แบบคงที่พวกเขาจะเรียกว่า 'Object Initializers' นี่คือการเชื่อมโยงบางอย่างเพื่อแสดงการใช้งานของพวกเขาในการเป็นJavaและC #