Хотел задать общий вопрос.
В Java похоже, довольно часто применяется такое "жонглирование" вложенными классами, объектами, методами...
Как обычно разбирается такой код? Например мы видим строку
int var=Something1.Something2.Something3.Something4.Something5;
или
int var=Something1.Something2.Something3.Something4.Something5();
где все эти Something... могут быть статическими классами, объектами, их полями (которые тоже объекты), их методами...
Как обычно эффективно разбирать действие и работу такого кода? Есть и какие-то методики, которые упрощают его анализ ?
Константин
13 уровень
ЧТЕНИЕ ОБЪЕКТНОГО КОДА -
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Александр ХаартExpert
26 сентября 2017, 15:51решение
Обычно все это легко понять. Классы пишутся с большой буквы. Поля(переменные класса или объекта класса) пишутся с маленькой первое слово, все остальные с большой, слитно. myIntVar
У методов есть круглые скобки, сами методы пишутся так же как поля класса. myPrivateMethod()
Константы - final static пишутся большими, соеденяются через подчеркивание MY_CONSTANT_VAR
Пакет пишут маленькими буквами. com.javarush.fail
Обычно такого стандарта придерживаются, так что разобрать что к чему, получается не так уж и сложно. К тому же, обычно в названии поля-метода указывают назначение. Из-за этого становится еще проще.
+2
Сергеев ВикторMaster
26 сентября 2017, 15:28
ну по идее имя метода (объекта) должно само рассказать что делает
например
Message.getBody().getFirstLine().getFirstWord() = сообщение.получитьТело().получитьПервуюСтроку().получитьПервоеСлово();
код должен быть читаемым, если это нет ак, то стоит придумать другие (более понятные) имена методам
Ну а если это не ваш код, то смотрите исходники метода и понимайте что он делает
+2
Константин
26 сентября 2017, 16:22
А что означает такая цепочка методов?
Если так
Message.getBody();
то это метод getBody() объекта (или стат класса ) Message
А когда за одним методом цепочкой идет следующий, что означает такая конструкция? К чему применен второй метод?
Message.getBody().getFirstLine() ????
0
Сергеев ВикторMaster
26 сентября 2017, 16:41
если написано имя класса и дальше метод - это статический метод
Collections.sort();
Если написано имя объекта и метод, то это может быть как статический, так и не статический метод (у объектов если доступ к обоим методам).
Понять какой это метод можно перейдя в исходники и посмотрев какой он.
Если идет последовательность методов, это значит, что они обрабатываются последовательно начиная с первого.
на примере Message.getBody().getFirstLine()
getBody() - условно возвращает тело сообщения.
getFirstLine() - используя результат прошлого метода(getBody) берем у тела сообщения первую строку.
0
Pavlo Plynko Java-разработчик в CodeGym Expert
27 сентября 2017, 11:04
Надо смотреть что возвращает метод getBody(). Допустим, это класс Body, т.е. у getBody() такая сигнатура:
Значит, у класса Body есть метод getFirstLine(), идем и смотрим что он делает. 0