Как разработать *реальная жизнь* навыки ООП?

Вы должны использовать метод filter в сочетании с includes и map.

let arr1=[{prodId:2},{prodId:4}], arr2=[{id:1, name:"Test1"}, {id:2, name:"Test2"}, {id:3, name:"Test3"}, {id:4, name:"Test4"}, {id:5, name:"Test5"}];
let ids = arr1.map(({prodId}) => prodId);
let result = arr2.filter(({id}) => ids.includes(id));
console.log(result);

Другой подход заключается в использовании метода some.

let arr1=[{prodId:2},{prodId:4}], arr2=[{id:1, name:"Test1"}, {id:2, name:"Test2"}, {id:3, name:"Test3"}, {id:4, name:"Test4"}, {id:5, name:"Test5"}];

let result = arr2.filter(({id}) => arr1.some(({prodId}) => prodId == id));
console.log(result);

12
задан Rob Sobers 10 November 2008 в 00:53
поделиться

12 ответов

Считайте Рефакторинг Martin Fowler и примените его к Вашей собственной работе.

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

15
ответ дан 2 December 2019 в 03:16
поделиться

Рассмотрите изучение Шаблонов разработки. Хотя кажется, что они не являются наиболее часто используемыми в корпоративных приложениях (я видел их более наиболее часто используемый в API и Платформы, чем встроенный в код предприятия), они могли быть применены для создания программного обеспечения более простым или более устойчивым в большом количестве ситуаций, если бы только разработчики знали, как применить их.

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

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

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

Править:
Я также хочу добавить, необходимо проверить книжный код Полные 2. Это очень влияет книга при мире разработки программного обеспечения. Это покрывает много различных понятий и теорий. Я изучаю что-то новое каждый раз, когда я считал его. Именно такая хорошая книга, если я читал его каждые 6 месяцев в год, я смотрю на него от другой точки зрения, которая делает меня лучшим программистом только путем перечитывания его. Неважно, насколько Вы могли бы думать, что знаете, эта книга заставит Вас понять, как мало Вы действительно знаете. Это - действительно замечательная книга. Я не могу подчеркнуть, насколько необходимо владеть этой книгой.

10
ответ дан 2 December 2019 в 03:16
поделиться

Если у Вас уже есть основы, я полагаю, что только опыт получит Вас далее. Вы говорите, что Вы не уверены, применяете ли Вы принципы правильно, но нет никакого корректного пути. Кодируйте Вас запись сегодня, Вы посмотрите на через 6 месяцев и зададитесь вопросом, почему Вы записали этому тот путь, и, вероятно, знайте о лучшем, более чистом способе сделать его. Я также гарантирую, что после 10 лет, Вы будете все еще изучать новые методы и приемы. Не волнуйтесь слишком много об этом, это прибудет, просто читать так, как Вы можете, и пытаться применить то, что Вы читаете в маленьких блоках.

5
ответ дан 2 December 2019 в 03:16
поделиться

Откровенно говоря, перечитывание старых статей David Parnas о сокрытии информации помогает мне войти в правильное настроение. Тематические исследования не могут быть непосредственно применимыми, но необходимо смочь вытащить некоторые полезные обобщения из них.

3
ответ дан 2 December 2019 в 03:16
поделиться

Я являюсь в настоящее время промежуточным через следующую книгу:

http://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062

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

Я также считал "Голову Сначала" книга и чувствовал, что был очень более обеспечен для того, что считал ее.

После наличия нескольких лет рабочего мирового опыта я теперь просматриваю книгу Craig Larman, что я рекомендую быть идеальным "следующим шагом" для меня.

О Присутствии "UML" в этом Книжном Заголовке:

Есть ли у Вас положительные чувства или отрицательные чувства о нотации UML, не позволяйте тому влиянию Ваше решение купить книгу (ISBN 0131489062) в любом направлении.

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

На самом деле вот кавычка, взятая непосредственно из книги:

То, что важно, знает, как думать и разработать в объектах, который является совсем другим и намного более ценным навыком, чем знание нотации UML. При рисовании схемы нам нужно к вопросам об ответах к заданиям: Каковы обязанности объекта? С кем это сотрудничает? Какие шаблоны разработки должны быть применены? Намного более важный, чем знание различия между UML 1.4 и 2.0!

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

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

5
ответ дан 2 December 2019 в 03:16
поделиться

Мое прозрение ООП прибыло из книги Grady Booch, путь давным-давно. Внезапно я понял, почему объекты были хороши.

В то время как полиморфизм прохладен, инкапсуляция составляет 75% того, почему объекты прохладны. Это - вид подобных интерфейс: Вы видите кнопки, но не проводное соединение. Перед объектами только самые дисциплинированные кодеры держали неряшливые пальцы от внутренних битов процедур других людей (это назвали "структурным программированием").

Объект помогает Делай как надо. Наследование и полиморфизм являются небольшими премиями.

Один способ узнать об объектах состоит в том, чтобы прочитать код других народов. Я изучил много путем чтения исходного кода для Delphi платформа VCL. Даже просто рассмотрение документации для Java поможет Вам видеть то, что должен сделать класс отдельного объекта и как это разработано, чтобы использоваться другими объектами.

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

Приятного отдыха!

4
ответ дан 2 December 2019 в 03:16
поделиться

Мое прозрение произошло, когда я пытался реализовать очень проблема OO (динамично и рекурсивно создающий SQL-операторы) в VB6. Лучший способ понять полиморфизм или наследование состоит в том, чтобы нуждаться в нем и не смочь использовать его.

3
ответ дан 2 December 2019 в 03:16
поделиться

Я думаю, что необходимо попытаться и перестать работать при реализации решений OO. Это - то, как я сделал это так или иначе. То, что я подразумеваю под сбоем, - то, что Вы заканчиваете тем, что писали вонючий код, успешно обеспечивая рабочее решение. После того, как это записало, что Вы получите ощущение того, где вещи не вполне чувствовали себя хорошо. У Вас могут быть некоторые прозрения, и/или можно пойти и искать для решения дождевика от других программистов. Несомненно, Вы реализуете некоторое изменение стандартных шаблонов разработки случайно. В ретроспективе, свет нажмет (о! таким образом, это - то, что посетитель для), и затем понимание ускорится.

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

1
ответ дан 2 December 2019 в 03:16
поделиться

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

1
ответ дан 2 December 2019 в 03:16
поделиться

Вы могли бы хотеть попытаться считать (и запись) некоторый Smalltalk некоторое время. Писк является бесплатной реализацией, которая может показать Вам питание полностью объектно-ориентированной среды (в отличие от Java или .NET). Весь источник кода библиотеки включен. Сам язык невероятно прост. Вы найдете, что Java и c# медленно добавляют опции, известные Smalltalk с 1980.

0
ответ дан 2 December 2019 в 03:16
поделиться

Вот наименее Pythonic способ:

out = ""
for x in range(len(lst)):
  for y in range(len(lst)):
    if x + y == len(lst)-1:
        out = lst[y] + out
-121--1217156-

IEnumerable приходит на ум.

-121--1131762-

Tortoise HG является чрезвычайно хорошо спроектированной частью программного обеспечения OO с открытым исходным кодом (написана на Python).

Если вы уже понимаете основы, построение чего-то с нуля на полностью объектно-ориентированном языке станет хорошим шагом в полном понимании архитектуры программного обеспечения OOP. Если вы не знаете Python, Python Essential Reference полностью изучит язык за несколько дней до недели.

После того, как вы поймете язык посмотрите на программное обеспечение выше, и у вас будут всевозможные эпифании.

0
ответ дан 2 December 2019 в 03:16
поделиться

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

Насколько слой ниже OO, попробуйте играть в функциях с более высоким порядком / поздним привязкой некоторое время и почувствовать, как используются эти относительно простые конструкции. Кроме того, постарайтесь понять, как OO реализован под капотом (VTables и т. Д.) И как это можно сделать в чистом C. Как только вы побуждаете значение использования функций более высокого порядка и поздней привязки, вы быстро понимаете, что OO Просто удобный синтаксис для передачи вокруг набора связанных функций и данных, которые они работают.

0
ответ дан 2 December 2019 в 03:16
поделиться