2012-02-01 17 views
7

क्लोजर में एक कंड स्टेटमेंट के अंदर बड़े खंडों को स्वरूपित करने की अनुशंसित विधि क्या है?बड़े खंडों के साथ cond

पूर्व:

(cond 
(> (large-function large-arg1 
        large-arg2 
        large-arg3) 
    long-var-name)) 
(->> (iterate #(* % 6) 1) 
     (take 10) 
     (apply +)) 
(> (large-function large-arg4 
        large-arg5 
        large-arg6) 
    long-var-name)) 
(->> (iterate #(* % 6) 1) 
     (take 10) 
     (apply +)) 
(> (large-function large-arg7 
        large-arg8 
        large-arg9) 
    long-var-name)) 
(->> (iterate #(* % 6) 1) 
     (take 10) 
     (apply +))) 

परिणाम शर्त के रूप में एक ही लाइन पर है, तो परिणाम बहुत दांतेदार समाप्त होता है, लेकिन अगर परिणाम और स्थिति अलग लाइनों हैं, यह भी कम करने के लिए आसान हो जाता है परिस्थितियों बनाम परिणाम का ट्रैक। यह एक ऐसी स्थिति की तरह लगता है जहां आम लिस्प स्टाइल कंड उपयोगी होगा, लेकिन कोष्ठक जोड़ना (शायद क्लोजर के मामले में ब्रैकेट) अनुशंसित पाठ्यक्रम की तरह प्रतीत नहीं होता है।

उत्तर

7

कई मामलों में इस डिफ़ॉल्ट के रूप में प्रश्न "इसे emacs के तरीके स्वरूपित करें" के रूप में। यह नहीं कि मैं निस्संदेह इस दर्शन का समर्थन करता हूं। यह ultimatly सौंदर्यशास्त्र

कम conds में की भावना पर निर्भर है मुझे पसंद है:

(cond 
    (clause1) (action) 
    (clause2) (action) 
आपके जैसे बहुत लंबा लोगों के लिए

मैं दृश्य डिलीमीटर के रूप में कुछ अतिरिक्त नई पंक्तियां जोड़ना चाहते:

(cond 
    (clause) 
    (action) 

    (clause2) 
    (action2) 

इसलिए मैं आपके कोड को प्रारूपित करूंगा:

(cond 
(> (large-function large-arg1 
        large-arg2 
        large-arg3) 
    long-var-name) 
(->> (iterate #(* % 6) 1) 
     (take 10) 
     (apply +)) 

(> (large-function large-arg4 
        large-arg5 
        large-arg6) 
    long-var-name) 
(->> (iterate #(* % 6) 1) 
     (take 10) 
     (apply +)) 

(> (large-function large-arg7 
        large-arg8 
        large-arg9) 
    long-var-name) 
(->> (iterate #(* % 6) 1) 
     (take 10) 
     (apply +))) 
संबंधित मुद्दे