Советы по кодированию с использованием враждебных инструментов?

Я разрабатываю приложение, используя неправильные инструменты. Я не хочу вдаваться в права или заблуждения этого - платформа была благословлена ​​как Стратегия, и сейчас ничего не изменится. Но я надеюсь, что кто-то может дать мне несколько советов о том, как сделать все возможное.

Мы используем серверный язык, позволим ему X и клиентский HTML/JS/CSS (на IE6). X является примитивным с точки зрения разработки приложений (но отлично подходит для обработки данных, поэтому мы его используем); у него даже нет концепции пользовательских функций, поэтому попытка сделать модульное приложение каким-либо образом является проблемой. Подумайте десятки тысяч строк вложенных операторов if/then/else.

Мое нынешнее предположение заключается в том, что сокращение спагетти-фактора кода будет невозможно, и что действительно отличная документация - это мое единственное оружие против этого, что становится абсолютно неподъемным кошмаром, который заканчивается на TheDailyWTF.

У кого-нибудь есть другие идеи?

(Я не упоминаю, какой язык X просто потому, что я надеюсь получить ответы на общую проблему работы с несовершенными инструментами, а не на какую-то особую тактику для X.)

Edit:

Хорошо, для странно любопытных X - это SAS. Я не хотел, чтобы вопрос фокусировался на том, являются ли функциональные макросы функциями (они не являются и не могут реализовывать шаблоны проектирования), или винить его - учитывая ограничения этого конкретного проекта, я фактически согласен с решением использовать Это! Я также уверен, что большая часть программного обеспечения разрабатывается в невероятно неоптимальных средах (сломанные инструменты, плохое управление, владение устаревшим бременем и т.д.) И что должны быть стратегии для того, чтобы все это работало.

Ответы

Ответ 1

Есть ли у X комментарии?

Напишите свой маленький язык, например, псевдокод в комментариях.

Ответ 2

Вы знакомы с Церковная диссертация?

Если вы не можете решить "A" в Y, но вы можете эмулировать Z в Y, а Z может решить "A" , тогда по определению Y может решить "A" .

Может быть, вы можете написать обобщенную рутину, которая каким-то образом делает X более эффективным для данной проблемы? Что-то вроде расширения X, или, что еще лучше, малоязычный, реализованный в X?

Похоже, что другие склонны связывать "маленький язык" с документацией. Хотя вы можете попытаться пойти таким путем (в этом случае я предлагаю вам взглянуть на Robodoc) Я думал что-то ближе к Wasabi, в подходе - т.е. действительно используя ваш инструмент X, чтобы создать своего рода интерпретатор для X ++ или даже Y, не зная, что X я не могу, конечно, более конкретно.

Ответ 3

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

Ответ 4

hmmmm, звучит как другой разработчик MUMPS/Intersystems Cache;)

Серьезно, однако, вы можете проверить, есть ли какие-либо инструменты для "X", которые могут отображать поток программы, или как часть процесса документации вырывают что-то вроде Visio или другого подобного инструмента, где вы можете пройти код и наметить, что он делает (более или менее). Самая трудная часть, вероятно, должна была бы вернуться назад и смотреть на эту стену кода и сразу же прыгать назад, чтобы все, что вы могли сделать, чтобы документировать ее/графа/диаграмму, это поможет.

Ответ 5

Можно ли использовать другую технологию, лучше подходящую для вашей проблемы между X и клиентской стороной?

В качестве альтернативы вы можете использовать больше инструкций IF/Then/else для построения модульных блоков кода, что может помочь в обслуживании.

Ответ 6

Мне трудно поверить, что у вас нет каких-либо пользовательских функций, доступных в X - даже пакетных файлах есть функции (вид)

Как только у вас есть функции, вы можете сделать вещи хотя бы довольно модульными.

Ответ 7

Вы можете найти нужный вам язык и реализовать обычные "шлепать некоторые данные в шаблон" в этом случае и использовать обертки для вызова "Х" для тех вещей, которые вам нравятся.