Answer the question
In order to leave comments, you need to log in
How do you choose from a variety of solutions the one that you eventually implement?
Добрый день!
Передо мной часто встает проблема: я знаю, что какой-то метод можно реализовать несколькими способами, но я не могу оценить, какой из них лучше. По каким критериям оцениваете вы?
Бывает, что какой-то из способов я пытаюсь реализовать, но у меня не выходит, т.к. я начинаю путаться в собственном коде. Понимаю, что дело в практике, но обычно, немного помучившись, я выбираю другой способ, так и не добив первую реализацию. Это нормальная практика?
Второй/Третий способ обычно более читабельный, но я начинаю задумываться о его эффективности. Возможно, стоило добить первую идею, она была лучше и т.д...
Посоветуйте, пожалуйста, какие-то способы оценки себя; возможно, какую-то литературу. Как мне научиться понимать, где плохое, а где хорошее решение; где плохая, а где хорошая реализация...
Answer the question
In order to leave comments, you need to log in
Это вряд ли возможно формализовать. Один из подходов: KISS — keep it simple. Выбираю самое простое решение, потому что, пока оно дойдет до production, требования 10 раз поменяются (и еще 10 раз поменяются уже после внедрения), а простое решение и проще реализовать и проще переделать. Но это только одна из эвристик.
Такое, чтобы запутаться в решении не бывает. Это только, если не понимать, что делаешь. Иногда бывает, что не совсем до конца понимаешь требования, или как решать задачу. Тогда можно зайти в тупик спустя несколько часов или дней. Но такие ситуации встречаются редко.
Иногда по мере того, как делаешь задачу, понимаешь, что ее можно сделать совсем иначе, при этом получится проще и эффективнее. Ничего страшного нет: с самого начала продумать идеальное решение не может никто.
In life, there are no ready-made recipes for all occasions. Life does not lend itself to formalization at all.
IMHO. Only experience, over time you will stop thinking about it and you will do it automatically.
In fact, it only seems to you that several options are equal. With experience comes an understanding of how each option is better / worse, and you apply it in a specific situation based on experience.
And to implement it is necessary first of all a working variant. If you have time and desire, you can always optimize later - you don't need to optimize in advance.
At the initial stage - do not bathe about it. You won't make it perfect anyway. Spin the bike - improve it with experience and understand what is right.
There is an option - ask about the implementations of the senior developer. If there is one. Describe to him all the options for implementation and he will explain where the pros and cons are.
Just write, read, understand. Everything will come with time.
First of all, the solution that "was the last time" is selected. Because it has already been personally verified, and it is not for nothing that it has already been chosen according to some parameters.
If for some reason it does not fit (ancient / buggy / lame shit code, which is embarrassing to look at, for example), then either a more productive one, or a universal / flexible one, or some new thing to try is looked for. Not necessarily in that order, depending on the project.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question