#java #интерфейс #оформление
На C++ привык оформлять классы следующим образом (в заголовочном файле) class MyClass { public: MyClass(); void Method1(); void Method2(); private: ... } Саму реализацию при этом выношу в .cpp или (в случае с header-only библиотеками) объявляю как inline и выношу ниже по тексту, отделив комментарием типа: /*****************************/ /* Реализация класса MyClass */ /*****************************/ Это позволяет человеку, читающему мой код, быстро изучить интерфейс класса, не вдаваясь в подробности реализации. Однако, начав изучать Java, аналогичной возможности не нашёл, и очень не хватает способа написания классов с удобно обозреваемой функциональностью. Лучшее, что посоветовали знакомые - описывать отдельно интерфейс и реализовывать его, но для классов, используемых однократно это, IMHO, overkill. Есть ли в Java способ описывать простые классы читабельно, с разнесённым объявлением и реализацией? Update1: из комментариев стало ясно, что в Java транслятор такой возможности не предоставляет, но аналогичную функцию выполняет javadoc: либо в заголовке файла в Documentation Comments (преимущество: это первое, что видит человек, читающий код), либо после каждой сигнатуры функции (пока не понял, перед телом или после него. Преимущество: документация привязана к описанию функции). Поэтому пока непонятными остаются два момента: Как заставить IDE (Intellij IDEA) генерировать документацию для функций с подстановкой параметров, аналогично тому, как это делает Eclipse? Как заставить javadoc (или javadoc-plugin) отслеживать соответствие документации и кода чтобы, к примеру, при компиляции после изменения списка параметров функции выдалось хотя бы предупреждение? Update2: / **перед объявлением функции работает и в IDEA. Javadoc отслеживает только комментарии, поэтому соответствие документации коду он проверить не может. Возможно, это умеют какие-либо плагины к IDE, но пока что в комментариях такой плагин не упоминался. Поэтому следить за тем, чтобы комментарии соответствовали актуальной версии кода, (и обновлялись при его изменении) приходится вручную. Обзор структуры класса частично позволяет охватить класс беглым взглядом, особенно когда IDE умеет "подсасывать" из javadoc описание функции. Возможности распечатать окошко структуры класса (как в C++ можно распечатать .h-файл для отдельного изучения) нет (точнее, я не нашёл), поэтому основной упор всё-таки надо делать на комментарии.
Ответы
Ответ 1
В java такой возможности нет. Вы можете облегчить чтение своего кода, если будете придерживаться соглашений. Например, Java Code Convention В Java рекомендуют делать компактные классы и методы, чтобы их было удобно читать. Немаловажный фактор, облегчающий чтение кода, - это именование. По названию сущности должно быть понятно, что она делает и как с ней работать. Я с вами согласен, что создавать интерфейс для однократно используемого класса - это чересчур, но обычно такие классы получаются небольшими и если выбрать правильно имена, то их будет несложно понять.Ответ 2
Сам по себе язык Java такой возможности не дает, и это, конечно, создает определенное неудобство. Однако современные IDE практически сводят это неудобство на нет. Вот как выглядит, например, фрагмент кода при работе в Eclipse: Тела методов свернуты, видны лишь их заголовки и первая строчка комментария. При нажатии по плюсику слева от текста тело метода (или комментарий) разворачивается, можно его прочитать или отредактировать и свернуть обратно. В тексте при наведении курсора на имя метода или поля всплывает хинт, в котором показано описание этого метода, которое берется из JavaDoc к этому методу. Заготовка для комментария (JavaDoc) со списком параметров формируется автоматически при вводе начальных символов (/**). Кроме того, в левой панели (Package explorer) показана структура класса -- ее можно настроить, чтобы там были показаны, например, только публичные методы. Всё это вместе взятое дает наглядную и удобную для работы картину класса и необходимость в разделении описания интерфейса и реализации совершенно отпадает.
Комментариев нет:
Отправить комментарий