В основном вы правы. Однако, ваша множественность не требует уникальности
, хотя это будет иметь большой смысл :-) Строго придерживаясь спецификации UML, может опустить && !disks.contains(d))
из вашего кода. Или вы добавляете тип, как показано выше. (Или, возможно, просто предположите, что люди могут правильно это распознать.)
Примечание: я думаю, что SCSIController также не может подключить диск. Ваш UML показывает 1..4
, поэтому вам понадобится хотя бы один диск, который делает ваш код неправильным в этом отношении.
Ваша проблема состоит в том, что, неважно, насколько Вы сжимаете его или скрываете его, в конечном счете браузер должен интерпретировать его. Лучшее, которое можно сделать, переименовывает все переменные в бессмысленный случайный Вар и удаляет все комментарии и пробел.
Несколько хороших инструментов:
Если Вы хотите простую путаницу и превосходное сжатие, я могу рекомендовать Компрессор YUI от Yahoo.
Я буду второй рекомендация для Компрессора YUI также, работать очень хорошо и могу сжать и запутать, также предоставляет рекомендации на кодировании JavaScript.
Я голосую за Packer также. Существуют интерактивные версии, Автономные версии и даже Консольная версия, которую я использую, чтобы Автоволшебно упаковать мой javascripts, когда я создаю свои веб-приложения.
Для тех, кто ищет - http://javascript-reference.info/javascript-obfuscators-review.htm - довольно хороший обзор обфускаторов JS
Как правило, не используйте обфускатор, который использует eval, поскольку это замедлит вашу страницу, используйте компрессор, который этого не делает. Это обеспечит обфускацию для новичков, никого еще не остановит никакой обфускатор.
Большинство обфускаторов в конце создают строки, представляющие код, а затем используют eval, это можно отменить простыми операторами предупреждения, что за точка?