Skip to content

Files

Latest commit

2d7d2c7 · Jan 4, 2015

History

History
127 lines (100 loc) · 4.94 KB

partiv.md

File metadata and controls

127 lines (100 loc) · 4.94 KB

‫فاصله در عبارات و دستورات:

‫از فاصله‌های نامربوط که در شرایط زیر صدق می‌کنند بپرهیزید:

‫I. بدون هیچ واسطه در داخل پرانتز‌ها، آکولادها و کروشه‌ها:

Yes:
    spam(ham[1], {eggs: 2})
No:
    spam( ham[ 1 ], { eggs: 2 } )

‫II. بدون هیچ واسطه قبل از کاما، سمی‌کولن(semicolon) و کولن(colon):

Yes:
    if x == 4: print(x, y); x, y = y, x
No:
    if x == 4 : print(x , y) ; x , y = y , x

‫III. برخی اوقات کولن شبیه به یک عملگر دودویی رفتار می‌کنه پس باید ما هم باهاش مثل یه عملگر رفتار کنیم حداقل یه عملگر با اولویت پایین و اطراف اون فاصله بزاریم البته به غیر از زمان‌هایی که عملوند اون حذف شده باشه بطوریکه فاصله از سمت عملوند هم حذف می‌شه:

Yes:
    ham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:]
    ham[lower:upper], ham[lower:upper:], ham[lower::step]
    ham[lower+offset : upper+offset]
    ham[: upper_fn(x) : step_fn(x)], ham[:: step_fn(x)]
    ham[lower + offset : upper + offset]
No:
    ham[lower + offset:upper + offset]
    ham[1: 9], ham[1 :9], ham[1:9 :3]
    ham[lower : : upper]
    ham[ : ]

‫IV. بدون واسطه قبل از پرانتز باز برای مشخص کردن آرگومان‌های تابع هنگام فراخوانی:

Yes:
    spam(1)
No:
    spam (1)

‫V. بدون واسطه قبل از پرانتز باز برای شروع indexing:

Yes:
    dct['key'] = lst[index]
No:
    dct ['key'] = lst [index]

‫VI. بیش از یک فاصله اطراف تساوی انتساب (یا هر تساوی دیگر) به بهانه‌ی تراز دادن با بقیه:

Yes:
    x = 1
    y = 2
    long_variable = 3
No:
    x             = 1
    y             = 2
    long_variable = 3

‫ باقی توصیه‌ها:

‫I. این عملگر‌های باینری را همیشه با یک فاصله در اطراف آن‌ها محاصره کنید: انتساب ( = )، انتساب‌های تکمیلی (‪+=, -=‬ و …)، مقایسه‌ای‪( == , < , > , != , <> , <= , >= , in , not in , is , is not )‬، بولی (and , or , not).

‫II. اگر عملگر‌هایی با اولویت‌های متفاوت مورد استفاده قرار گیرند، فقط اطراف عملگر با اولویت کمتر فاصله قرار می‌دهیم البته این بیشتر به تشخیص و سلیقه‌ی شخصی شما بستگی دارد،‌ امّا، هیچ وقت بیشتر از یک فاصله استفاده نکنید و همیشه در هر دو طرف عملگر به یک میزان فاصله قرار دهید.

Yes:
    i = i + 1
    submitted += 1
    x = x*2 – 1
    hypot2 = x*x + y*y
    c = (a+b) * (a-b)
No:
    i=i+1
    submitted +=1
    x = x * 2 – 1
    hypot2 = x * x + y * y
    c = (a + b) * (a - b)

‫III. هنگام استفاده از = برای مقداری دهی اولیه به پارامتر یا مشخص کردن مقدار یک آرگومان اطراف آن از فاصله استفاده نمی‌کنیم.

Yes:
    def complex(real, image=0.0):
        return magic(r=real, i=image)
No:
    def complex(real, image = 0.0):
        return magic(r = real, i = image)

‫IV. استفاده از جملات مرّکب (چندین جمله در یک خط) اصلاً توصیه نمی‌شه:

Yes:
    if foo == 'blah':
        do_blah_thing()
    do_one()
    do_two()
    do_three()
Rather No:
    if foo == 'blah': do_blah_thing()
    do_one(); do_two(); do_three()

‫V. زمانی که می‌توان ساختار‌های if/for/while را در یک قالب کوچک تک خطی نوشت هرگز آن‌ها را در چندین قالب ننویسید:

Rather No:
    if foo == 'blah': do_blah_thing()
    for x in lst: total += x
    while t < 10: t = delay()
Definitely No:
    if foo == 'blah': do_blah_thing()
    else: do_non_blah_thing()

    try: somthing()
    finally: cleanup()

    do_one(); do_two(); do_three(long, argument,
                                 list, like, this)

    if foo == 'blah': one(); two(); three()

بعدی قبلی