Conversation
| @@ -0,0 +1,27 @@ | |||
| package ru.jengine.virtualmachine.commands; | |||
There was a problem hiding this comment.
Предлагаю начать писать тесты :) По сути весь данный пакет должен перекочевать в тестовую структуру, за исключением интерфейса Command
There was a problem hiding this comment.
- Context (Script)
- VM (+ перенести имеющиеся команды в тесты)
|
|
||
| public class ScriptContext implements CommandContext { | ||
| private final VMStack stack = new VMStack(1024); | ||
| private final List<Object> storage; |
There was a problem hiding this comment.
Есть мысль назвать данное хранилище регистрами) Вообще мы можем создать отдельный объект, который будет представлять эту абстракцию регистров. Сейчас у нас лист объектов, что является достаточно ненадёжным. Хотелось бы, наверное иметь отдельный объект ScriptRegisters с таким контрактом:
public interface ScriptRegisters {
@Nullable
Object getRegister(String registerName);
void setRegister(String registerName, Object registerValue);
}
Возможно будет иметь смысл регистры ограничивать (чтобы мы могли поддерживать только конкретные регистры, типа иметь список разрешённых registerName, но это пока оставим на будущее)
|
|
||
| public void push(Object element) { | ||
| if (stack.size() == stackSize) { | ||
| throw new StackOverflowError("VM's stack has overflowed."); |
There was a problem hiding this comment.
Тут давай кидать тоже VirtualMachineException. throw new VirtualMachineException(VM's stack has overflowed! Command push is unavailable);
| } | ||
|
|
||
| @Override | ||
| public int execute(CommandContext context) { |
There was a problem hiding this comment.
Давай, наверное, унаследуем VirtualMachineException от Exception и тут сделаем throws VirtualMachineException.
Соответственно во всех метода контекста, где может упасть ошибка виртуальной машины - тоже добавим throws
No description provided.