Рабочий процесс 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 и отладчик, запуская тест, который терпит неудачу, потому что вы еще не написали метод, поэтому вы используете отладчик для создания метода, затем входите в метод и пишите достаточно кода, чтобы получить тест для прохождения.