Giter Club home page Giter Club logo

01-mark's Introduction

mark — задача на TDD

Процесс выполнения задачи.

Описание плана, написаня тестов и проектирования(отложено)

  • План написан под Ubuntu. Реализация плана на 3-4 ноября

Релиазовать план будет слишком затратно(много тонкостей). Пишу парсер для конкретной разметки.

Напишите процессор простого markdown-подобного языка разметки.

Описание языка, он же пример файла с разметкой.

Описание намеренно сделано не полным. Вы должны сами придумать наиболее удачное поведение вашего процессора во всех спорных случаях. Все ваши решения должны быть зафиксированы в виде модульных тестов.

Задача

Создайте консольное приложение, принимающее в качестве аргумента имя исходного файла в markdown-подобной разметке, и генерирующее в директории программы html-файл, полученный после процессинга исходного файла по описанным правилам.

TDD

Создавая процессор этого языка работайте в режиме TDD.

Соблюдайте следующий процесс
  • Сначала проведите начальное проектирование. Определите интерфейсы. Не пишите код методов на этом этапе.
  • Пишите код методов, только если есть красный тест, и только тот код, который поможет сделать тест зеленым.
  • Придумывайте тесты по одному. Старайтесь каждый раз придумывать как можно более простой тест, который позволит максимально просто продвинуться в реализации задачи.
  • Помните — выбор следующего теста, который вы хотите написать — это акт проектирования и планирования своей работы! Относитесь к этому ответственно.
Тесты как спецификация
  • Пишите тесты так, чтобы их имена читались как спецификация на язык разметки! У вас должна получиться более точная и полная спецификация, чем в файле sample.txt.
  • Уделите внимание правильному порядку тестов. Упорядочте их так, чтобы их было удобно читать как спецификацию.
  • Каждый тест должен быть в формате Arrange—Act—Assert.
  • Не разрешайте себе более одной проверки на тест. Это упростит придумывание названий для тестов. Удержитесь от проверки сразу всего-всего-всего. Тест — пункт спецификации. Значит и проверять нужно только один пункт спецификации

git

Сделайте fork этого репозитория и ведите всю работу в нем.

Разбейте работу на отдельные подзадачи и делайте по отдельному коммиту на каждую подзадачу.

Старайтесь не смешивать массовые механические и содержательные правки. Например, добавление функциональности и массовые переименования должны быть в разных коммитах.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.