Задание
как и в прошлый раз
Оценка за задание есть наибольшая из оценок за решённые задачи.
Задание должно быть выложено в репозиторий homework, который должен быть выложен на bitbucket. В противном случае, вне зависимости от задачи вы получаете не более 6 баллов.
Если вы хотите получить оценку выше 8 баллов, код должен быть чистым и читаемым (по существу я этого требовал и раньше). Т.е. все функции, переменные и классы имеют содержательные и понятные названия. Схема именования сущностей в одном типе сущностей однородна (т.е. либо везде сокращения, либо везде полные слова). Функции не бывают длиннее ~10 строк и не делают больше одного дела. Строки не бывают длиннее 75 символов (включая отступы). Внутри строк есть одна политика на тему того, как ставить пробелы. Части кода расположены стандартным образом: импорты -> константы и глобальные переменные -> определения (функций и классов) -> if __name__ == "__main__". Нет дублирования кода.
Я настоятельно рекомендую писать чистый код изначально (да, это значит, что иногда в очевидных, казалось бы, местах приходится на 10 минут задуматься над названием переменной), потому что так быстрее получить рабочую программу. Всё равно основное время уходит на отладку, а не на написание.
отныне и впредь
Модуль, все функции и классы должны сопровождаться документацией.
Те функции, которые не имеют побочного эффекта (т.е. которые не делают что-то с графическим интерфейсом, не делают ничего с файлами, не рискуют потереть всё), должны сопровождаться примерами вызова. Приложенные примеры должны проходить тесты doctest.
Прочитайте условия внимательно. Увы, мне не удалось сделать так, чтобы у всех задач смысл задания охватывался одним взглядом.
(6 баллов) Возьмите какой-нибудь из своих старых токенизаторов и приделайте к нему документацию.
(8 баллов) Возьмите какой-нибудь из своих старых токенизаторов и приделайте к нему документацию и примеры для doctest. Постарайтесь сделать так, чтобы как можно больше кода было покрыто тестами – например, функцию чтения файла можно разделить на собственно чтение, которое не потестируешь, и разбор содержимого, который потестировать нужно. Программа должна уметь выдавать файлы, пригодные для моего соревнования токенизаторов (т.е. два столбца: токен и тип токена, разделённые пробелами или табуляциями).
(10 баллов) Переделайте токенизатор так, чтобы он использовал классы (и выглядел симпатично и понятно). Напрашивается класс Token, но, возможно, в вашем случае будет удобно выделить ещё какой-нибудь класс? Код должен удовлетворять требованиям этого задания (документация, побольше тестов).
* (11 баллов) То же самое, но токен знает свой номер строки и номер позиции в строке. Программу можно попросить их выдавать. 1
Полезно подумать над тем, можете ли вы это сделать, и как это сделать. Но действительно это делать: точно уверены, что хотите тратить на это своё время? И что господин ПЖ не пришёл спрашивать вас о курсовой или НИСах или...? (1)