चूंकि मैं वास्तव में "स्टाइलिंग" के बारे में पागल हूं, इसलिए मैं उन दिशा-निर्देशों को लिखूंगा जो मैं वर्तमान में करीब 8k एसएलओसी परियोजना में लगभग 35 फाइलों के साथ उपयोग करता हूं, जिनमें से अधिकांश पीईपी 8 से मेल खाते हैं।
पीईपी 8 कहता है 79 (डब्ल्यूटीएफ?), मैं 80 के साथ जाता हूं और अब इसका उपयोग किया जाता है। सब के बाद कम आंख आंदोलन!
डॉकस्ट्रिंग्स और सामान जो '' 'में कई पंक्तियों को फैलाते हैं। ''
में बाकी सब कुछ। इसके अलावा मुझे डबल कोट्स पसंद नहीं हैं, मैं केवल हर समय सिंगल कोट्स का उपयोग करता हूं ... अनुमान है कि ऐसा इसलिए है क्योंकि मैं जावास्क्रिप्ट कोने का निर्माण करता हूं, जहां यह भी आसान है '', क्योंकि इस तरह से आपको सभी से बचने की ज़रूरत नहीं है एचटीएमएल सामग्री: ओ
सिर पर, कस्टम एप्लिकेशन कोड से पहले अंतर्निहित। लेकिन मैं "असफल प्रारंभिक" दृष्टिकोण के साथ भी जाता हूं, इसलिए अगर ऐसा कुछ है जो संस्करण निर्भर करता है (उदाहरण के लिए जीटीके) तो मैं इसे पहले आयात करूंगा।
निर्भर करता है, ज्यादातर बार मैं आयात foo और foo आयात से जाता हूं, लेकिन वहां कुछ निश्चित मामले (ईजी नाम पहले से ही किसी अन्य आयात द्वारा परिभाषित किया गया है) क्या मैं फू आयात बार से ब्लै के रूप में भी उपयोग करता था।
4 स्पेस। अवधि। यदि आप वास्तव में टैब का उपयोग करना चाहते हैं, तो एससीएम के साथ काम करते समय उन्हें स्थानांतरित करने से पहले उन्हें रिक्त स्थान में कनवर्ट करना सुनिश्चित करें। लेकिन कभी नहीं (!) मिक्स टैब्स और स्पेस !!! यह भयानक बग पेश कर सकता है और कर सकता है।
some_method या foo_function, एक कॉन्स्टेंट, MyClass।
इसके अलावा, आप मामलों में खरोज जहां एक विधि कॉल या कुछ और कई पंक्तियों तक फैला के बारे में लोगों का तर्क है सकते हैं, और आप के बारे में जो लाइन निरंतरता शैली आप का उपयोग करेगा का तर्क कर सकते हैं। या तो ()
के साथ सबकुछ घिराएं या लाइन चीज़ के अंत में \
करें। मैं बाद वाला करता हूं, और मैं अगली पंक्ति की शुरुआत में ऑपरेटरों और अन्य सामान भी रखता हूं।
# always insert a newline after a wrapped one
from bla import foo, test, goo, \
another_thing
def some_method_thats_too_long_for_80_columns(foo_argument, bar_argument, bla_argument,
baz_argument):
do_something(test, bla, baz)
value = 123 * foo + ten \
- bla
if test > 20 \
and x < 4:
test_something()
elif foo > 7 \
and bla == 2 \
or me == blaaaaaa:
test_the_megamoth()
इसके अलावा, मैं तुलना के संचालन के लिए कुछ दिशानिर्देश हैं, मैं हमेशा None True False
के खिलाफ जांच करने के लिए is(not)
का उपयोग करें और मैं if foo:
की तरह एक अंतर्निहित बूलियन तुलना ऐसा कभी नहीं, मैं हमेशा if foo is True:
करते हैं, गतिशील टाइपिंग अच्छा है लेकिन कुछ मामलों में मैं बस यह सुनिश्चित करना चाहते हैं कि चीज सही चीज करे!
एक और चीज जो मैं करता हूं वह कभी भी खाली तारों का उपयोग नहीं करना है! वे एक स्थिरांक फ़ाइल में हैं, शेष कोड में मेरे पास username == UNSET_USERNAME
या label = UNSET_LABEL
जैसी चीजें हैं, यह इस तरह से और अधिक वर्णनात्मक है!
मैं भी कुछ सख्त खाली स्थान के दिशा निर्देशों और अन्य पागल सामान है, लेकिन मुझे यह पसंद है (क्योंकि मैं इसके बारे में पागल हूँ), मैं भी एक स्क्रिप्ट जो मेरे कोड की जांच लिखा है:
http://github.com/BonsaiDen/Atarashii/blob/master/checkstyle
चेतावनी (!): यह आपकी भावनाओं को चोट पहुंचाएगा! जेएसलिंट से भी अधिक ...
लेकिन यह सिर्फ 2 सेंट है।
यदि आप पहले से ही पीईपी 8 देख चुके हैं, तो संभवतः मानक के रूप में व्यापक रूप से स्वीकार नहीं किया गया है ... –
टैब EVIL !! –
@ डेविड: धन्यवाद, मैं फिर पीईपी 8 का पालन करूंगा। @ फ़ज़ी लॉलीपॉप: क्यों? –