1

Я ищу способ уточнить контракты моих функций Lua. В частности, какие атрибуты там должны иметь параметры.Параметры самодокументирования в Lua

Чтобы проиллюстрировать мою проблему, некоторые фрагменты кода с типичной структурой моего текущего кода. Функция, которая создает новый «экземпляр» с двумя публичными функциями.

local function newTextPrinter(color) 
    return { 
     print = function(textToPrint) 
      PrintText(textToPrint, 20, color, 5, 'center'); 
     end, 
     printBig = function(textToPrint) 
      PrintText(textToPrint, 30, color, 5, 'center'); 
     end 
    } 
end 

Функция, которая принимает параметр, который должен иметь одну и ту же подпись (или надмножество).

local function printSomeStuff(textPrinter) 
    textPrinter.print("some") 
    textPrinter.printBig("stuff") 
end 

Призывание поздней функции

local textPrinter = newTextPrinter("ffffffff") 
printSomeStuff(textPrinter) 

Проблема с этим кодом, что вы не можете сказать, что параметр textPrinter предоставляется printSomeStuff должен выглядеть, не смотря на реализацию printSomeStuff. Хотя в этом примере достаточно просто сделать это, это часто бывает не так (и в моем сценарии происходит переключение между файлами). Также нет намека на то, что подходящее значение может быть получено через newTextPrinter, кроме сходства по имени.

Есть ли способ сделать код более самостоятельным документированием и показать, что авторы намерены лучше?

Я предпочитаю подход, который является легким и не пытается эмулировать классовое наследование. Аналогичным образом, код предпочтительнее, чем документация, и, в противном случае, документация в формате, понятном инструментам, предпочтительнее свободной формы. Ясно, что я могу просто написать комментарий вроде: «параметр textPrinter нуждается в print и printBig публичных функциях», однако это очень подвержено ошибкам, если ничего не говорит о ошибках, которые вы делаете в документации, или когда вы реорганизуете код и забываете его обновить.

Я использую Lua 5.0 и довольно новичок в этом языке.

+0

Возможный дубликат [Таблица с методами, как обрабатывать/проверить их?] (Http://stackoverflow.com/questions/35670456/table-with-methods-how-to-handle-inspect -them) – warspyking

+0

Возможный дубликат http://stackoverflow.com/questions/35670456/table-with-methods-how-to-handle-inspect-them/ – warspyking

+2

Просто любопытно, почему все еще Lua 5.0? – lhf

ответ

2

Да. Во-первых, именование является ключевым. Далее комментарии могут описывать контракт. Кроме того, отформатированные, помеченные, обработанные и контекстно представленные комментарии - это то, как много людей программируют. Наконец, гиперссылки в форматированных комментариях дают возможность получить доступ к полной документации.

Существует несколько систем обработки форматированных комментариев: LuaDoc, LDoc, язык документации LDT, .... К сожалению, нет стандарта, и выбор будет в первую очередь зависеть от возможностей IDE пользователя. Некоторые IDE даже помогут автору при форматировании комментариев.

Даже без обработки маркировка и форматирование - по большей части - улучшают читаемость человека. Так как долго источник легко всплывать, он действительно помогает.

Popover documentation for the print function

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

  • Нет связанных вопросов^_^