سؤال

لقد تم استخدام Clojure قليلا و تريد إنشاء بعض المشاريع التي هي أكبر و أكثر تعقيدا من اللعب.لقد تم استخدام جافا طوال السنوات القليلة الماضية و تعودنا على ما ايديس تفعل بالنسبة لي -- تجميع الكثير من دروس حزمة لهم في الجرار ، إنشاء الملفات الدفعية للمستخدمين لبدء لهم.

عندما ننظر إلى أمثلة من التنمية في Clojure يبدو أنها ستكون على غرار تحميل الملفات في REPL لنرى كيف تعمل, تحرير الملف, تحديث, تكرار.نارى فئة أو جرة التي يتم إنشاؤها في أي مكان.في ستيوارت هالواي رائع "البرمجة Clojure" لم أتمكن من العثور على واحد مثال ":gen-class" ، على سبيل المثال.على Clojure ايديس التي استخدمت (ClojureBox و enclojure NetBeans المساعد) يبدو لتعزيز نفس تدفق العمل.

هل هذا مقصود ؟ هي أدوات غير ناضج أو هل أنا فقط لا "على ذلك" ؟

أود أن أسمع بعض تدفق العمل أمثلة من الناس الذين خلقت بعض غير تافهة البرامج المستخدمة من قبل المستخدمين العاديين (ليس المشروعات الإنمائية الأخرى) إذا كان ذلك ممكنا.

شكرا على تبادل الآراء الخاصة بك.

هل كانت مفيدة؟

المحلول

أعتقد حقا أن هناك 2 الأسئلة هنا:

أ) كيفية نشر (و بناء وإدارة تبعيات).كل ما يمكنني قوله هو أن ننظر في مشاريع أخرى مع أهداف مماثلة/المجالات و نسخها.

ب) العمل:

بلدي تدفق العمل هو من هذا القبيل:

  1. فتح ملف وكتابة بعض ارتفاع مستوى التمني الإعلانات

  2. بدء كتابة بعض الوظائف لدعم ذلك

2.5 نسخ تعريفات الدالة على REPL كما خلق لهم

  1. فتح ملف آخر و كتابة بعض الاختبارات الأساسية للتحقق من وظيفة يعمل

3.5 نسخ هذه REPL

  1. تكرار بين اثنين من مخازن بناء الاختبارات على سبيل المثال برنامج نحو الهدف النهائي.هذه تصبح في نهاية المطاف أنشطة مماثلة و أنا أعلم أنني فعلت.

  2. التفاف الملف الثانوي في deftest

الآن عندما أعود في شهر بإمكاني تشغيل الاختبارات وتكون سعيدا!حفظ REPL مخازن يمكن أن توفر بعض القيمة مع القليل من الجهد.هذا فقط ما يعمل بالنسبة لي في الوقت الحالي, و أنا سعيد أن يكون تعليما أفضل نهج.

أما عن اختيار IDE مقابل REPL - معظم بيئات التطوير الإضافات التي REPLs لذا لست متأكدا من واحد أو الخيار الآخر - حقا فقط حول أي محرر نصوص أنت الإنتاجية و كيف تريد إدارة المشروع الخاص بك هيكل.لا يوجد أي 'تفعل ذلك بهذه الطريقة' الهياكل مسبقة الصنع AFAIK حتى في هذه النقطة فمن السهل أن ننظر إلى مشاريع محددة (مثل Clojure نفسها ، أو غبش أو compojure أو أي من المكتبات المذكورة على الموقع الرئيسي.

نصائح أخرى

لفترة طويلة في IDE

تم تشجيع نهج التنمية REPL من قبل معظم الأسرة LISP (واللغة الفنية الأخرى). بعض هذه في REPL أيضا ميزة الميزات الإكمال التلقائي قد اقترانه IDE جافا.

وREPL يمنحك بضع مزايا رئيسية على نهج موحد. الأول هو أنه يسمح لك لتنفيذ تعليمات برمجية عشوائية أثناء وقت التشغيل من البرنامج، التي يمكن أن تجعل التصحيح أنظمة متعددة الخيوط أبسط من ذلك بكثير. ثانيا، والأهم من ذلك، فإنه يجعل من السهل لاختبار وظائف الخاص بك بينما كنت التعليمات البرمجية. أنت لا تحتاج إلى بناء إطار حول وظيفة جديدة أو فئة، يمكنك أن تلعب معه مباشرة في REPL، ونرى كيف يستجيب لمجموعة متنوعة من حالات الاستخدام.

حسنا, تبدأ, أي تقريبا لائق تطوير البرنامج المساعد ل أي محرر أو IDE سوف أعطيك طريقة استخدام Clojure REPL من داخل IDE.ربما حتى تسمح لك لتحميل الملفات إلى REPL لاختبار هذا.أنت لا تحتاج إلى اختيار واحد أو الآخر.

Enclojure هو الذهاب شوطا طويلا ، هذا مؤكد.ومع ذلك ، فإن معظم الناس سعداء تماما مع استخدام Emacs, بما في ذلك نفسي.Emacs يستخدم اللثغة كما في تكوين اللغة ، لذلك عادة ما يكون الخيار الأكثر طبيعية إلى Lisper.

اللغات التي REPLs باستخدام REPL باعتبارها جزءا رئيسيا من عملية التنمية هو القاعدة.تحرير الملفات, تحميل لهم في REPL, اللعب معهم لمعرفة ما إذا كان العمل شطف وتكرار.هذه هي واحدة من المزايا الرئيسية لغات مع REPLs مثل Clojure و هاسكل و CL و مثل هذا.

وبناء الجرار ، وتجميع Clojure رمز الأشياء البسيطة.حتى أنك لا حقا /قد/ تجميع Clojure رمز أكثر من مرة إذا كنت لا تريد.عندما تفعل عثمان تجميع مع الجنرال الدرجة ، الذي يجمع إلى الدرجة الملفات التي يمكنك ثم وضع في وعاء.هناك طن من الأمثلة و حتى الدروس تنتشر بين interwebs.أسهل و أنجع طريقة هي استخدام شيء مثل النمل و كتابة بناء السيناريو الذي يجمع Clojure رمز يولد .جرة بالنسبة لك.أول مرة فعلت ذلك ، أعتقد أنه سيكون من الصعب القيام به, ولكنه كان في الواقع بسيط جدا.نظرت فقط في Clojure و Clojure-Contrib النمل بناء الملفات المشار إليها النمل صفحات المساعدة في كل شيء آخر كنت بحاجة.

شيء واحد أود أن أشير إليه هو أن Enclojure /لا/ بناء الواقع القابل للتنفيذ .جرة الملفات بالنسبة لك ، إذا طلب ذلك.أنا متأكد أكثر تقدما أشياء كنت تستخدم ستضاف في المستقبل.بل لا تزال جديدة تماما.

يمكنني استخدام على حد سواء - Eclipse IDE و عكس اتجاه عقارب الساعة المساعد الذي يوفر REPL.هذا هو بشكل خاص تركيبة لطيفة إذا كنت في وضع كود جافا جانب Clojure (كما أفعل أنا).

بلدي النهج العام هو:

  • كتابة Clojure البرمجية في محرر
  • الحفاظ على REPL مفتوحة لاختبار الأشياء (Ctrl+Enter هو اختصار مفيد هنا:فإنه ينفذ ما يتم تحديد رمز في المحرر الخاص بك في REPL)
  • استخدام عام IDE أدوات إدارة المشاريع, بناء, اختبار, SCM.... الخ

في بعض الأحيان , كما تعمل بحتة في REPL.هذا هو عادة أفضل لاختبار الأمور بسرعة.إذا أنا لا سيما مثل قطعة من اختبار التعليمات البرمجية, أنا ببساطة نسخ/لصق من REPL في اختبار جناح.

ما أقوم به هو إنشاء المشروع مع Leiningen.إذا كنت ترغب فقط اضرب بعيدا لفترة من الوقت, يمكنك كتابة فقط lein repl و المشروع الخاص بك classpath مجموعة أن repl.

في الواقع على الرغم من استخدام Emacs ، الوحل و سوانك clojure.بعد الانتقال إلى المشروع ، يمكنك ببساطة اكتب M-x clojure-جاك في.هذا يبدأ سوانك خادم الوحل يربط إلى ذلك لديك repl في المخزن المؤقت.بالطبع فقط أنه لا يستحق أكثر من تشغيل repl في قذيفة.ما تحصل عليه هو القدرة على كتابة التعليمات البرمجية في آخر العازلة ، keybinding حدد sexps أو وحدات أكبر وتنفيذها في repl لمعرفة ما إذا كان يعمل.أيضا الوحل يعطيك مفيد ارتباطات المفاتيح من أجل المهام المشتركة.انظر سوانك-clojure على جيثب للحصول على مزيد من المعلومات.

JohnJ ، يمكنك أن تفعل الشيء نفسه في Emacs.في الواقع أن العبارة ربما حشوا.

(add-hook 'after-save-hook etc.

هنا هو شخص ما على سبيل المثال بعد-حفظ-هوك git: https://gist.github.com/449668

ومع الكسوف، هل يمكن أن يكون وحدة الاختبارات (أو أي برنامج) يعمل في كل مرة قمت بحفظ ملف في المشروع. العملية كلها تستغرق أقل من ثانية - انه لشيء رائع لتطوير اختبار يحركها، ويزيل الحاجة إلى قص ولصق في REPL لمعظم الحالات. بالإضافة إلى أنك تحصل للحفاظ على الاختبارات! : -)

وأنت تريد استخدام كعكة لتجنب وقت بدء تشغيل JVM كل مرة تقوم فيها بتشغيل الاختبارات الخاصة بك. يمكنك تشغيل cake test على سطر الأوامر، أو يكون مجرد الكسوف تشغيله لك عند حفظ أي ملف في المشروع.

وحصلت على هذا العمل من خلال إنشاء مشروع مع Leiningen وتركيب <أ href = على "HTTP : //clojure-cake.org "يختلط =" نوفولو "> كعكة ، وتثبيت rel="nofollow"> عكس الكسوف المساعد. لإعداد الكسوف لتشغيل الاختبارات في كل مرة تقوم بحفظ حدد على المشاريع> Properties-> بناة، انقر فوق جديد، حدد البرنامج، الذي يطلق عليه شيء من هذا القبيل "اختبارات تشغيل"، إضافة إلى مسار cake تحت الموقع، حدد دليل العمل الخاص بك المشروع، وإضافة test إلى الوسائط الاختيارية. تحت "إنشاء خيارات" علامة التبويب، اختر 'خلال يبني السيارات ".

وحصلت على الفكرة العامة لهذا الكتاب من جيف Younker "، وأسس رشيق التنمية بيثون." تم رجل إيماكس لمدة 20 سنوات، ولكن هذه الحيلة قد وضعت الكسوف في الجزء الأمامي من بلادي العمل في الآونة الأخيرة.


تحديث: بعد ما يقرب من سنة واحدة، وأنا الآن استخدام Midje مع lazytest الخيار لتفعل الشيء نفسه في حين النامية على حد سواء إيماكس والكسوف

.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top