Рабочий процесс Squeak
Я новичок в Squeak и Smalltalk, но не в программировании вообще (у меня есть опыт Python).
Я понимаю различные инструменты, присутствующие в среде Squeak, такие как Workspace, System Browser, а также конструкции языка Smalltalk. Я понимаю, как они работают изолированно, но
Я не уверен, как их использовать в целом.
Мой вопрос - это типичный рабочий процесс при разработке в Squeak.
Насколько я понимаю,
I open squeak.
I create a Class in the System Browser.
I then write/test/execute code in the Workspace, adding methods
to my class based on the code I tried out in the Workspace.
Rinse and repeat for other classes.
Является ли вышеприведенное правило тем, что делают маленькие торговцы, или есть вещи, которые
я пропустил. Также будут оценены другие общие советы /gotchas (если они есть).
Спасибо.
Кстати, я искал об этом и читал некоторые уроки, но не получал удовлетворительных ответов, поэтому никаких ссылок lmgtfy
пожалуйста;)
Ответы
Ответ 1
То, что вы описываете, я бы назвал личным стилем развития. Поскольку нет окончательного способа, как вы должны развиваться, трудно сказать.
Но то, что вы описываете, является жизнеспособным вариантом. Особенно, если не ясно, как вещи действительно сочетаются. У Smalltalk есть сила, что у вас есть все объекты. Таким образом, можно попробовать его в рабочей области. Если вы поймете, как это должно работать, настало время поместить ваш код в методы. В то же время неплохо написать тест. В рабочей области вы проверили свой код с помощью значений примера. Это точно тест. Когда вы помещаете код без значений в метод, вы можете поместить использование этого метода с помощью значений примера в тест. Тесты помогут вам понять, измените ли вы что-то фундаментальное, пока вы строите все это.
Другой стиль разработки, который я использую, - это использование инспектора. Особенно, если вы извлекаете вещи из сети, это довольно легко сделать. Скажем, вы извлекаете xml из веб-api из сети. В рабочей области я выдаю команду выбора URL и открываю инспектор по результату. В инспекторе я начинаю разбирать результат и на каждом отдельном этапе обработки открывать другого инспектора по результату, пока у меня не будет результата, который я хотел бы получить. С этого момента все инспекторы укладываются друг на друга. Вы просто создаете методы от каждого инспектора, начиная с последнего шага, затем закрываете инспектора, берете следующего инспектора и создаете из него метод и т.д.
Наконец, многие разработчики любят разрабатывать с помощью отладчика. Вы просто пишете код, как будто он уже существует. Вы можете изменить код в отладчике, и вы можете перезапустить текущее выполнение текущего метода. Выполняя это, вы получите следующий отладчик. Вы добавляете следующий необходимый метод, а затем продолжаете работу с программой. Вы получаете следующий отладчик и т.д.
Вы видите, что существует множество возможных стилей. Но какой из них лучше всего - ваше личное мнение.
Ответ 2
Обычно я работаю с тремя открытыми окнами: двумя браузерами и TestRunner. Я пишу тест, чтобы выяснить, как я хочу поговорить с объектом - его API, если хотите. Затем я запускаю TestRunner, убедившись, что тест терпит неудачу по причинам, которые я ожидаю.
Затем я сделаю одно из двух: либо напишите новый метод, который мне нужен непосредственно в Debugger, и перезапустите тест, пока он не станет зеленым, либо не перейдите ко второму браузеру и не напишите нужный мне метод.
Я иногда использую Рабочее пространство, в основном как своего рода блокнот, например, можно использовать Python REPL. Если вы написали метод #initialize
на стороне класса, вы, вероятно, захотите повторно инициализировать свой класс из рабочей области.
Ответ 3
TDD также является вариантом для разработки Smalltalk. Squeak поставляется с SUnit.
Вы можете комбинировать TDD и отладчик, запуская тест, который терпит неудачу, потому что вы еще не написали метод, поэтому вы используете отладчик для создания метода, затем входите в метод и пишите достаточно кода, чтобы получить тест для прохождения.