|
|
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Есть код примерно такой по смыслу Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. т.е. в метод передаются в качестве параметров какие то объекты и внутри изменяются. Мне не нравится что при чтении кода "method" не понятно что эти объекты внутри метода изменяются. Вопрос: на эту тему есть какие то конвенции? Название метода, аннотации, соглашение в таких случаях например возвращать мапу с измененными объектами и явно вытаскивать их оттуда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 12:50:39 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Если метод приватный, то нормально. Если туда все кому не лень скармливают данные, то лучше так не делать. Почитайте про mutable\immutable объекты, в принципе. Лучше если метод будет возвращать результат. Ещё лучше, если результат будет другой Map. Потому как параметр, ведь может оказатся UnmodifiableMap в какой-то момент. Если там 3 mutable объекта в параметрах и метод не приватный, то это более чем странно. Хотя, конечно же, в конкретных ситуациях могут быть нюансы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 12:56:16 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Метод приватный. Сам люблю когда возвращается конкретный результат и явно видно что метод что-то поменял в переменных но просто получается что заполнение оных мап не является основным смыслом метода - то есть сетером его назвать как то рука не поднимается. Я думал может какие то аннотации есть типа что параметр такой то является одновременно и инпутом и аутпутом - ведь если такая возможность предусмотренна (менять переданные внутрь объекты напрямую) то может есть и стандартные способы оформления этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 13:03:25 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
МарсМетод приватный. Тогда и париться не стоит. Главное чтобы в контексте класса было легко понять что метод делает. Правда встаёт вопрос, почему это параметры метода, а не поля класса. Вообще сложно обсуждать на абстрактном примере. В конкретных случаях всегда есть куча аргументов того или иного подхода. Никаких специальных аннотаций нет. Напишите JavaDoc к методу, где явно укажите что параметры - mutable. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 13:18:29 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
МарсЯ думал может какие то аннотации есть типа что параметр такой то является одновременно и инпутом и аутпутом - ведь если такая возможность предусмотренна (менять переданные внутрь объекты напрямую) то может есть и стандартные способы оформления этого. Аннотацию на метод можно самому сделать. Это просто интерфейс по своей сути. Я обычно помечаю жирным и красным в javadoc. Идея про аннотации понравилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 13:39:57 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
МарсЯ думал может какие то аннотации есть типа что параметр такой то является одновременно и инпутом и аутпутом - ведь если такая возможность предусмотренна (менять переданные внутрь объекты напрямую) то может есть и стандартные способы оформления этого. Аннотацию на метод можно самому сделать. Это просто интерфейс по своей сути. Я обычно помечаю жирным и красным в javadoc. Идея про аннотации понравилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 13:41:30 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
LeonidvАннотацию на метод можно самому сделать. Это просто интерфейс по своей сути. Можно даже на параметр. Вопрос только в том, нужно ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 13:43:53 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Марс, я всегда пишу приставку Set SetXXXXX или WriteXXXX но это когда это основное назначение метода. В ООП есть инкапсуляция, т.е. мало ли что происходит внутри объекта. Да ещё такого как Main() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 14:11:34 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
счас подумал, в Java это наверно пересечётся с сеттерами - "Set" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 14:14:11 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Petro123счас подумал, в Java это наверно пересечётся с сеттерами - "Set" ? На абстрактном примере обсуждать смысла нет. Но еслм метод приватный и занимается обработкой Map. То это точно не set()? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 14:16:27 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, я вот не помню, где имеет значение эти 3 буквы. То ли в генераторе сеттеров, то ли в IDE. Зарезервировано ли 3 буквы для публичных? И где это проявится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 14:18:46 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Petro123Blazkowicz, я вот не помню, где имеет значение эти 3 буквы. То ли в генераторе сеттеров, то ли в IDE. Зарезервировано ли 3 буквы для публичных? И где это проявится? DI без доп атрибутов аннотаций будет искать для сеттинга поля private Service service; public void setService(Service service;) { this.service = service; } Найдя такой сеттер спринг попробует заинджектит, если класс аргумента , конечно, совпадает с классом поля ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 14:22:03 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Озверин, OK =============== вот, например, у меня есть публичный метод - Добавьте себя на события (как вариант) COM.SetListEvent(список). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 14:24:46 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Конкретней был кусок кода который обрабатывает DTO и из него вытаскивает (попутно преобразуя) несколько мап и коллекцию. В качестве рефакторинга я вытащил этот код в отдельный метод (потому что по уровню абстракции вся эта логика была лишней в основном методе), но вставл вопрос как возвращать все те объекты которые из дто считываются. То есть это и не сетеры в явном виде (потому что их много и потому что кроме собственно сетера изнутри может дергаться другая логика) В ретроспективе совсем кошерно было бы создать спец класс с полями соответвующими возвращающим объектам и чистенько доставать их оттуда но мой вопрос был как хэндлится ситуация когда так не сделано (ведь если есть возможность так не делать значит многие так не будут делать. Вопрос исключительно в удобочитаемости - чтоб при просмотре кода не залезая внутрь метода было понятно что метод изменяет входящие параметры которые потом используются дальше по коду. Например кто-то комментирует в явадоке такие поля как mutable,кто-то выделяет цветом кто-то свои аннотации пишет - я и подумал может стандарт какой-то есть потому что с аннотациями я в силу своей серости ( и проекта работающего на 1.42) не очень знаком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 14:33:32 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Марс, я за понятность Названия метода. Дай своему соседу имя, и спроси - что он делает. 2. Код на куски бьют по кускам логики, т.е. опять по НАЗВАНИЮ. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 14:37:35 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
МарсКонкретней был кусок кода который обрабатывает DTO и из него вытаскивает (попутно преобразуя) несколько мап и коллекцию. В качестве рефакторинга я вытащил этот код в отдельный метод (потому что по уровню абстракции вся эта логика была лишней в основном методе), но вставл вопрос как возвращать все те объекты которые из дто считываются. То есть это и не сетеры в явном виде (потому что их много и потому что кроме собственно сетера изнутри может дергаться другая логика) Ничего не понял. DTO не обрабатывают. Их тренсформируют в бизнес сущности. Обычно этим занимается отдельный слой реализованый как AOP - фильром, или другим интерцептором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 14:38:48 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Petro123Озверин, OK =============== вот, например, у меня есть публичный метод - Добавьте себя на события (как вариант) COM.SetListEvent(список). но не в твоем случае, Set - он не будет трогать.с большой буквы таки ;)..по идее) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 14:46:21 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Я так понимаю, ТС пришел из C++, где есть const. В Java такого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 16:40:29 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪЯ так понимаю, ТС пришел из C++, где есть const. В Java такого нет. вроде const тут ни при чём. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 16:47:42 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Petro123Blazkowicz, я вот не помню, где имеет значение эти 3 буквы. То ли в генераторе сеттеров, то ли в IDE. Зарезервировано ли 3 буквы для публичных? И где это проявится? Прочитай про javabeans. Это оттуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 19:14:16 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Марст.е. в метод передаются в качестве параметров какие то объекты и внутри изменяются. Мне не нравится что при чтении кода "method" не понятно что эти объекты внутри метода изменяются. Вопрос: на эту тему есть какие то конвенции? Название метода, аннотации, соглашение в таких случаях например возвращать мапу с измененными объектами и явно вытаскивать их оттуда? К сожалению, это не слабая проблема в java. Отсутствие гарантий неизменяемости объектов со стороны языка вроде позволяют сделать некоторые упрощения для языка, а также и избежать излишнего копирования объектов. Но на самом деле, например, в крупных технических проектах с месивом кода, когда работает куча людей, частенько разной квалификации, как потроха серверов приложений, не редко вынуждены заниматься дублированием объектов с целью каких-то "гарантий", что естественно сказывается на работе с памятью и на перфомансе. И серебряной пули в этих вопросах нет. В функциональных языках с принципами имутабельности объектов тоже есть и технические проблемы, и ряд неудобств. Как с ними пытаются бороться на платформе JVM, можно посмотреть на примере кложуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2012, 14:39:19 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
PSV100К сожалению, это не слабая проблема в java. Отсутствие гарантий неизменяемости объектов со стороны языка imho раздутая проблема. Нехватало ещё const объектов вводить. И причём Java, если такое же в других ЯП (imho) В Java обычную БЛ и код не надо разносить на 100 независимых кусков (imho) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2012, 14:46:40 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Petro123imho раздутая проблема. Нехватало ещё const объектов вводить. И причём Java, если такое же в других ЯП (imho) В Java обычную БЛ и код не надо разносить на 100 независимых кусков (imho) В том и дело, что проблема как раз и не раздутая, никто не парится, в освновном, (и я тоже), особенно в рамках бизнес-логики. А вот на около-системном уровне не всё так однозначно. Я не работаю на этом уровне, поэтому конкретными примерами сразу завалить не могу. Пару лет назад я читал блог какого-то разработчика из JBoss, он неплохо показывал к каким последствиям приводят многие "незапаривания" в жабе, и почему очень трудно реализовать эффективный жаба-сервер. Всего не помню, но тогда немного полазил в потрохах томката, действительно есть места, где делаются копии данных перед вызовами методов. Можно почитать про JGit. Его разработчики неплохо раскрывали проблемные места в жабе, вплоть до того, что внутри реализации слоя I/O (как минимум вокруг mmap, если я не вру) тоже не избежать лишних копирований буферов. Их вердикт - оригинал гита по перфомансу им не догнать, но в целом вполне производительное решение. Можно почитать на какие ухищрения пошли в Disruptor-е, в том числе и чтобы избежать лишние создания объектов. И совершенно верно, что если ещё и плюсовый const для объектов ввести в язык, то можно закапываться. Лично мне и так жаба как язык не нравится, ни для системного уровня не ахти, ни для написания прикладной логики. В Эрганге, например, живут без всяких const. Не всегда конечно система может оптимизировать и делать правки по месту вместо копирования, у эрланговцев есть вынужденные хаки. И в кложуре без transients (правок по месту) не обошлись, не сохранили "абсолютную чистоту". Увы, идеального ничего нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2012, 16:49:31 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
PSV100, тут и проблема imho в Java, что нет чёткого деления по вертикали на системный и несистемный (прикладной). Отчасти от Веб, который на компонентный ООП сильно не рассчитан. ----- Если оптимизировать, то можно далеко зайти. На GameDev совсем в другую сторону ЯП оптимизируют. И т.д. Т.е. "проще - лучше", что в данном контексте - ДайИмяФункцииЧеловеческое. Вроде все на этом сошлись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2012, 17:04:29 |
|
||
|
Вопрос по стилю
|
|||
|---|---|---|---|
|
#18+
Petro123тут и проблема imho в Java, что нет чёткого деления по вертикали на системный и несистемный (прикладной). Отчасти от Веб, который на компонентный ООП сильно не рассчитан. Ну, вроде, как раз некая ликвидация деления на системное и неочень и было одной из идеологических причин создания java-платформы. Создатели пытались ликвидировать потребность в связке C/C++ -> питон, луа, свой скриптинг, или какой-нибудь 4GL в ERP-системах и т.д. Причём идеология и архитектура в java-платформе вполне красива и грамотна относительно своих заложенных целей - раз уж взята политика ООП - то язык/платформа во всём объектны до глубины костей. Другое дело, что по прошествию немало лет ООП показало и свои плюсы, и не малые проблемы. Лично я сторонник простоты, например, меня очень привлекает гугловский Go как промышленный язык/платформа (речь не идет о возможности его применения на сегодняшний день). Без кривого ООП решаются те же проблемы, легко и красиво, даже без "функциональщины" (хотя их интерфейсы - те же хаскеловские классы типов или протоколы кложуры, только вид с боку). Но с другой стороны, это сейчас можно быть таким "шибко умным", насмотревшись на многолетний опыт со стороны (и создатели Go тоже насмотрелись на много чего, при своём опыте в не один десяток лет). Одним словом, java не идеальна. Petro123Т.е. "проще - лучше", что в данном контексте - ДайИмяФункцииЧеловеческое. Вроде все на этом сошлись. Да, так оно и есть. Просто обидно, что это решение на уровне скриптовых языков с динамической типизацией, без железных гарантий, при этом жаба так и не имеет их лёгкости, несмотря на все чудеса жабских IDE, с их автокомплитами и прочими семантическими анализами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2012, 21:52:29 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37702693&tid=2132315]: |
0ms |
get settings: |
15ms |
get forum list: |
25ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
59ms |
get topic data: |
26ms |
get forum data: |
5ms |
get page messages: |
102ms |
get tp. blocked users: |
3ms |
| others: | 360ms |
| total: | 609ms |

| 0 / 0 |
