Comments 19
Это типа шутка такая...?
Я - студент вуза, эта проблема существует в кругах студентов, которые пишут код по идее «лишь бы работало», не задумываясь о модульности программы :)
У меня есть прекрасный пример для вашей статьи https://github.com/HermanKirshin/MainBrainfuck/blob/main/_.cs. Если кому интересно - предлагаю угадать что делает этот код.
Рано или поздно всех программистов настигнет дзен. И поймут они, что любой способ написания кода (а так же любой используемый ЯП) можно считать оптимальным, если он соответствует поставленной задаче. И перестанут шутить глупые шутки и устраивать холивары.
Хороший компилятор с маленькой функцией может поступить довольно специфическим образом: не использовать стек для локальных переменных и даже для аргументов функции. С вашим подходом - No Way! Стек же, как известно, не бесконечный... И чисто в теории вижу крайне сложноотлавливаемые баги когда стека будет не хватать при некоторых условиях. Зато весело! :-D
Нет, ну в этом что-то есть. Войдя в состояние потока нагенерить 3000 строк когда (выводя в функции лишь повторяющиеся участки кода), а уже в следующие заходы отрефакторить код и заботливо и с любовью разложить его по классам и функциям. Для некоторых (не очень больших) задач, может быть, очень даже применимо.
Самое важное тут – состояние потока, которое легко разрушается если отвлечься от конечной цели.
Вы пишете функции только чтобы избавиться от дублей? А так не пишете - "вот эта функция делает А, а вот эта делает Б, я их щас писать не буду, но представлю себе, что они уже есть, и пишу дальше, не отвлекаясь на детали, потом реализую"? Так же удобнее и проще, даже в потоке.
Да, вы правы, если можно сразу выделить какую-то функцию как сущность - лучше сделать это сразу, в крайнем случае оставить комментарий (если какой-то код нуждается в комментарии, то там явно не хвататет функции). Про дубли сделал акцент потому как код с дублями рефакторить потом уже очень и очень трудозатратно и здесь компромисса быть не может.
Так толсто, что даже тонко :)
Читал до последних абзацев с выражением лица (0_0) и мыслями: "ааа как же SOLID, Clean и т.д.?"
А потом уже и на теги обратил внимание)
Шалость удалась (с)
Хоть это и анти-паттерн, но поможет сохранить несколько драгоценных байт на микроконтроллерах, а может и даже несколько десятков тыс. руб. если удалось ужать код для какой-нибудь Attiny13 вместо Attiny45 при многосерийном производстве.
Ваш Main() — это бомба замедленного действия: Как MOPP позволит вам избежать катастрофы в вашем коде?