2009-07-24 4 views
19

अभी, मैं जो कुछ भी करता हूं वह एक स्रोत फ़ाइल में फिट होने का प्रबंधन करता है, और उस पर एक आश्चर्यजनक रूप से छोटा है। आप कैसे तय करते हैं कि अलग-अलग फ़ाइलों में कितना और क्या विभाजित करना है?मैं लिस्प कोड को एकाधिक स्रोत फ़ाइलों में विभाजित करने के बारे में कैसे जा सकता हूं?

जावा के साथ, यह तय करना आसान है कि एक फ़ाइल में क्या चल रहा है (निर्णय आपके लिए पहले से ही बनाया गया है), लेकिन Lisp में मुझे लगता है कि मैं कई छोटे कार्यों को लिखता हूं जो एक दूसरे पर निर्माण करते हैं और यह तय करना मुश्किल हो जाता है कि क्या, कुछ भी विभाजित किया जाना चाहिए। चूंकि मैं लिस्प में बड़ी परियोजनाओं से निपटता हूं, यह अच्छा होगा कि पहिया को फिर से शुरू न करें, लेकिन मुझे इस बारे में वेब पर बहुत सारी ठोस जानकारी नहीं मिल रही है।

क्या आप लिस्प में बड़ी परियोजनाओं से निपटने के लिए कुछ रणनीतियों को साझा कर सकते हैं, या मुझे कुछ संसाधनों के बारे में बता सकते हैं जो इससे निपटते हैं?

उत्तर

13

जब आप एक लिस्प प्रोग्राम लिखना शुरू करते हैं तो यह एक फ़ाइल से शुरू करना उपयोगी हो सकता है। एक बार कोड बहुत बड़ा हो जाता है (जो भी हो) आप इसे विभाजित कर सकते हैं। जब आप किसी ऐसे संगठन के पास आ रहे हैं जिसके लिए संगठन की आवश्यकता है, तो आपको इसमें कुछ काम करना चाहिए।

कुछ संकेत:

  • कुछ उपकरण स्रोत फ़ाइल निर्भरता का प्रबंधन और संकलन, लोड, संकलन और लोड और दूसरों की तरह कार्रवाई प्रदान करने के लिए कर रहे हैं। एएसडीएफ एक है, लेकिन अन्य भी हैं।

  • आपको निर्भरताओं का वर्णन करने के लिए एक फ़ाइल की आवश्यकता है। इसे नाम दें ताकि इसे पहचाना जा सके।

  • आपको एक या अधिक पैकेज परिभाषित करने के लिए एक फ़ाइल की आवश्यकता हो सकती है।

  • आपको अपनी खुद की फाइलों में कार्यान्वयन विशिष्ट कार्यक्षमताओं डालने की आवश्यकता हो सकती है। स्वयं की फ़ाइलों को

  • सामान्य उपयोगिताओं को विन्यास डेटा की

  • चाल बड़ी मात्रा में अन्य फ़ाइल

  • मैक्रो से पहले इस्तेमाल परिभाषित किया जाना चाहिए में होना चाहिए। अन्य फाइलें इस फ़ाइल पर निर्भर करती हैं और यदि मैक्रो परिभाषा बदल जाती है तो स्वचालित रूप से पुन: संकलित किया जाना चाहिए।

  • समूह कार्यक्षमता एक फ़ाइल में एक साथ लॉग इन होने पर लॉग इन है। एक ड्राइंग प्रोग्राम में: सभी ड्राइंग फ़ंक्शंस, सभी उपयोगकर्ता इंटरफ़ेस कमांड, फ़ाइलों को डेटा सहेजना, प्रिंटिंग, ...

  • फ़ाइल आकार के बारे में बहुत अधिक परवाह नहीं है। लिस्प स्रोत फाइलें बड़ी हो सकती हैं। कभी-कभी 100k।

  • फ़ाइलों में चारों ओर घूमना विकास पर्यावरण द्वारा समर्थित है। एम।एक प्रतीक पर इसका स्रोत पाता है।

  • सुनिश्चित करें कि आप पूरे लिस्प को पुनरारंभ करने की आवश्यकता के बिना फ़ाइल को फिर से लोड कर सकते हैं।

  • आम लिस्प फ़ंक्शन के रूप में लोड और COMPILLE-FILE प्रदान करता है। आप इन कार्यों को अपनी फाइलों में उपयोग कर सकते हैं।

+0

धन्यवाद - यह एक उपयोगी सूची है – Galghamon

4

यदि आप सामान्य लिस्प का उपयोग कर रहे हैं, तो ASDF सिस्टम निर्दिष्ट करने का एक लोकप्रिय तरीका है। यह आपकी स्रोत फ़ाइलों (और एक बहुत कुछ और) के बीच लोड ऑर्डर निर्भरता को संभालता है।

+0

मैं कुछ हद तक चौंक गया हूं - मुझे पता है कि मैंने उस पृष्ठ को आपके लिंक में पहले देखा है और स्किम किया है, लेकिन उस समय के बारे में कोई जानकारी नहीं थी। संदर्भ में अब यह और अधिक समझ में आता है - धन्यवाद! – Galghamon

+1

यह अध्ययन करने में मदद कर सकता है कि छोटे सीएल पुस्तकालयों ने अपनी .asd फ़ाइलों को कैसे स्थापित किया। यहां मैंने लिखा एक साधारण छोटा सा है: http://common-lisp.net/project/cl-applescript/ –

+0

धन्यवाद, इस तरह के एक छोटे पैकेज का उदाहरण देखकर वास्तव में मददगार था! – Galghamon

5

जैच बीन द्वारा "Making a small Common Lisp project" देखें।

+0

यह एक अच्छा स्पष्टीकरण/एएसडीएफ का उपयोग करने का उदाहरण है, धन्यवाद – Galghamon