2016-04-08 2 views
2

Я видел этот вопрос и его ответы, но они немного упускают из виду, как лучше всего писать core.clj, чтобы сделать библиотеку легко доступной и понятной.Как лучше всего настроить core.clj

What is the purpose of core.clj file?

Один ответ сказал, что мы могли бы сделать все, что угодно, но, вероятно, не следует. :) Я ищу путь наименьшего сопротивления, поэтому core.clj это.

Но еще один ответ сказал, что пользователи будут использовать этот путь для доступа к моей библиотеке. Это заставляет меня думать, что у меня есть это в обратном направлении, с ядром, являющимся несколькими основами. Вместо этого это звучит так, как core.clj (его пространство имен) должно тянуть мои другие пути и эффективно служить его API.

+0

Это не имеет большого значения. Вот пример библиотеки, которая не использует ядро ​​(https://github.com/mishadoff/numberto/tree/master/src/numberto), и вот тот, который делает (https://github.com/davidsantiago/clojure -csv/дерево/ведущий/SRC/clojure_csv). Все зависит от того, как вы решили структурировать свою библиотеку. – endbegin

ответ

0

Как и в случае с accepted answer связанным вопросом, пространство имен core обычно содержит точку входа в приложение или в вашу библиотеку. При этом это только соглашение, а не необходимость, вам технически не нужно иметь модуль core.

Если ваши core модулей занимает всего несколько основ, которые используются другими фрагментами кода, и вы ожидаете пользователей вашей библиотеки для вызова функций foo и bar из пространства имен yourlib.foobar как точки входа, вы, вероятно, будете лучше от переименования core модуль для чего-то еще, чтобы не путать людей, проверяющих код вашей библиотеки. Тем не менее, один замечательный образец, который я видел, состоит в том, что некоторые люди помещают точки входа/функции в модуль yourlib.clj (yourlib), которые служат тонким фасадом для вызовов функций в yourlib.core. Итак, в некотором смысле, yourlib.core - это действительно «ядро» вашей библиотеки, но не предоставляет точки входа.

Смежные вопросы