Исследование зависимости библиотеки Dynamic от Mac OS & Linux

Геттеры и сеттеры сильно злоупотребляют

Я видел миллионы людей, утверждающих, что публичные поля являются злом, поэтому они делают их приватными и предоставляют для всех них геттеры и сеттеры. Я считаю, что это почти идентично открытию полей, может быть немного по-другому, если вы используете потоки (но, как правило, это не так) или если ваши средства доступа имеют бизнес-логику / логику представления (по крайней мере, что-то «странное»).

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

ОБНОВЛЕНИЕ:

Этот ответ вызвал некоторые противоречия в его комментариях, поэтому я попытаюсь прояснить его немного (я Я оставлю оригинал нетронутым, поскольку за это проголосовали многие люди.

Прежде всего: любой, кто использует открытые поля, заслуживает тюрьмы.

Теперь, создавая приватные поля и затем используя IDE для , автоматически генерируем геттеры и сеттеры для каждого из их - это почти так же плохо , как и использование открытых полей.

Многие думают:

private fields + public accessors == encapsulation

Я говорю (автоматически или нет), что генерация пары геттер / сеттер для ваших полей эффективно идет вразрез с так называемой инкапсуляцией, которую вы пытаетесь достичь .

Наконец, позвольте мне процитировать дядю Боба в этой теме (взято из главы 6 «Чистого кода»):

Есть причина, по которой мы держим наши переменные закрытыми , Мы не хотим, чтобы кто-то еще зависел от них. Мы хотим свободы менять свой тип или реализацию по прихоти или импульсу. Почему же тогда так много программистов автоматически добавляют геттеры и сеттеры к своим объектам, выставляя свои закрытые поля , как если бы они были открытыми?

53
задан Scz 20 September 2017 в 22:29
поделиться

3 ответа

  • Mac OS X: otool -L файл
  • Linux: ldd файл

Если эти команды не предоставляют что вы хотите, в Mac OS X вы можете выгрузить все команды загрузки с помощью otool -l file . В Linux вы можете выгрузить все содержимое динамического раздела с помощью readelf -d file .

99
ответ дан 7 November 2019 в 08:32
поделиться

попробуйте ldd в терминале. Это предоставит вам список динамических библиотек, которые нужны двоичному файлу.

6
ответ дан 7 November 2019 в 08:32
поделиться

Вы также можете попробовать MacDependency ( http://macdependency.googlecode.com ), который предоставляет замену пользовательского интерфейса для otool в MacOS X. Он показывает полные деревья зависимостей и также экспортируемые символы.

10
ответ дан 7 November 2019 в 08:32
поделиться