Многие другие ответы касаются каких-то более крупных вопросов дизайна или являются скорее абстрактными. Если вы думаете с точки зрения того, что произойдет в будущем, вы можете определить некоторые четкие методы, чтобы помочь будущему коду.
Прежде всего думайте, что в будущем кто-то попытается добавить функцию в код или попытается повторно использовать ваш код где-то еще. Они также могут попытаться исправить функцию в коде. Очевидно, что наличие хорошего чистого кода является обязательной отправной точкой, но есть и некоторые конкретные методы, которые можно сделать.
Защитное программирование : проверяйте ввод за пределы того, что вам действительно нужно в текущем приложении. Всякий раз, когда вы вызываете API, обязательно убедитесь, что их ввод - это то, что вы ожидаете. В будущем люди будут смешивать новые версии кода, поэтому объем ошибок и возврат API будут отличаться от того, что есть сейчас.
Устранить неопределенное поведение : у большого количества кода есть поведение, которое как бы развивается из ниоткуда. Определенные комбинации ввода приводят к определенному результату, который на самом деле никто не намеревался, но именно так и происходит. Теперь неизбежно кто-то будет полагаться на это поведение, но никто не будет знать об этом, поскольку оно не определено. Любой, кто попытается изменить поведение в будущем, непреднамеренно сломает вещи. Используйте проверки безопасности сейчас и попробуйте удалить / заблокировать все неопределенные варианты использования кода.
Automated Test Suite : я уверен, что вы можете найти тома, написанные о необходимости модульных тестов. В отношении проверки будущего, однако, это является критическим моментом, когда кто-то может реорганизовать код. Рефакторинг необходим для поддержания чистого кода, но если вам не хватает хорошего набора тестов, вы не сможете безопасно провести рефакторинг.
Изоляция и сегрегация . Инкапсуляция и правильная модульность - это хороший принцип проектирования, но вы должны пойти дальше. Вы часто обнаружите, что вам нужно использовать библиотеку, или API, или продукт, который может иметь сомнительное будущее. Возможно, из-за проблем с качеством, проблем с лицензированием или из-за постоянного развития авторов. В этих случаях потребуется дополнительное время, чтобы поместить слой между вами и этим кодом. Сократите API до того, что вам нужно, чтобы соединение было очень низким, чтобы в будущем его можно было легко заменить.