Мотивация
Привет, ребята. Меня зовут Роман Педченко и я full-stack разработчик. Рад знакомству с вами. Это моя первая статья и прошу не судить ее слишком строго. Идея написать статью появилась после разговора с моим другом Максом Громом, и я хочу сказать ему спасибо.
История
Каждый день множество разработчиков проходят техническое собеседование. Кто-то хочет получить новую работу, кто-то первую. Но проблема в том, что вы должны показать свои знания за ограниченный промежуток времени, поэтому каждый ответ очень важен. По моему скромному мнению, существует три типа ответов. Первый — это просто академические знания. Это означает, что вы читали о чем-то, но не использовали это. Второй — вы можете описать или привести пример из реального мира, но не можете ответить на вопрос, что это — принцип, парадигма или паттерн. И последнее, но не менее важное — это сочетание первого и второго. Вы не только знаете, как это использовать, но и что вы используете. Как вы, наверное, догадываетесь, третье
усиливает вашу позицию на собеседовании как действительно хорошего разработчика.
Готов поспорить со всеми, что неважно, кандидат вы или интервьер, чтобы подготовиться к интервью, повторяйте SOLID принципы. Кроме того, я считаю, что все стараются использовать их каждый день, но когда кто-то спрашивает, не могли бы вы объяснить их и привести примеры. Это всегда так сложно. В этой статье я коснусь только одной буквы из аббревиатуры, но я надеюсь, что это поможет вам быть более убедительными.
Буква I
Если вы откроете Вики, то легко поймете, что
Принцип разделения интерфейсов (ISP) утверждает, что никакой код не должен быть вынужден зависеть от методов, которые он не использует. ISP разделяет очень большие интерфейсы на более мелкие и специфичные, так что клиентам придется знать только о тех методах, которые их интересуют.
Я надеюсь, что это звучит очень просто для понимания, но, как я уже писал выше, нужны не только теоретические знания, но и примеры, где мы их используем, а здесь есть много людей, которые могут застрять. И вот вам подсказка. Это проще, чем выучить само определение. Если вы являетесь разработчиком Angular, то вы счастливый человек. Каждый раз и каждый день, когда вы создаете компонент и добавляете к нему хуки, вы используете это определение.
export class AppComponent implements OnInit, OnDestroy {
ngOnInit() {
// some logic
}
ngOnDestroy() {
// some logic
}
}
Как вы видите, нам нужно реализовать два интерфейса для того, чтобы хуки начали работать и все. И, как ни странно, я верю, что этот ответ покажет вам, что вы, по крайней мере, знаете букву I из SOLID.
Спасибо и ломай ногу на собеседовании.