Вопросы с тегом «java»

Java - это высокоуровневый, независимый от платформы, объектно-ориентированный язык программирования, изначально разработанный Sun Microsystems. Java в настоящее время принадлежит Oracle, которая приобрела Sun в 2010 году.

13
Должны ли мы избегать языковых возможностей, которые есть у C ++, а у Java нет?
Предположим, я ограничен в использовании C ++ средой в проекте. Хорошо ли предотвращать использование некоторых языковых функций, которые есть в C ++, но нет в Java (например, множественное наследование, перегрузка операторов)? Я думаю, что причины: Поскольку Java новее, чем C ++, если Java не предоставляет возможности, которые есть в C …
110 java  c++  code-quality 

12
Обоснование предпочитать локальные переменные переменным экземпляра?
Кодовая база, над которой я работаю, часто использует переменные экземпляра для обмена данными между различными тривиальными методами. Первоначальный разработчик непреклонен, что он придерживается лучших практик, изложенных в книге « Чистый код » дядюшки Боба / Роберта Мартина: «Первое правило функций заключается в том, что они должны быть маленькими». и «Идеальное …
109 java  refactoring 

5
В Java, я должен использовать «final» для параметров и локальных, даже если мне не нужно?
Java позволяет помечать переменные (поля / локальные объекты / параметры) как final, чтобы предотвратить переназначение в них. Я нахожу это очень полезным с полями, так как это помогает мне быстро увидеть, являются ли некоторые атрибуты - или целый класс - неизменяемыми. С другой стороны, я считаю, что это гораздо менее …
105 java  coding-style  final 

5
Почему стандартные и статические методы были добавлены к интерфейсам в Java 8, когда у нас уже были абстрактные классы?
В Java 8 интерфейсы могут содержать реализованные методы, статические методы и так называемые методы «по умолчанию» (которые классам реализации не нужно переопределять). На мой (возможно, наивный) взгляд, не было необходимости нарушать подобные интерфейсы. Интерфейсы всегда были контрактом, который вы должны выполнить, и это очень простая и чистая концепция. Теперь это …

12
Мне сказали, что исключения должны использоваться только в исключительных случаях. Как я узнаю, является ли мой случай исключительным?
Мой конкретный случай здесь заключается в том, что пользователь может передать строку в приложение, приложение анализирует ее и назначает ее структурированным объектам. Иногда пользователь может ввести что-то недопустимое. Например, их вклад может описать человека, но они могут сказать, что их возраст - «яблоко». Правильное поведение в этом случае - откатить …

6
Стек и куча памяти в Java
Насколько я понимаю, в Java стековая память содержит примитивы и вызовы методов, а кучевая память используется для хранения объектов. Предположим, у меня есть класс class A { int a ; String b; //getters and setters } Где будет храниться примитив aв классе A? Почему куча памяти вообще существует? Почему мы …

9
Почему трудно заставить Java-программу выглядеть «родной»?
Большинство приложений Java не выглядят так же, как приложения C / C ++. Swing, возможно, был разработан специально для того, чтобы иметь необычный вид, но, основываясь на том, что я прочитал, SWT, например, пытался «выглядеть нативно», и не добился полного успеха. Мой вопрос: Почему разработчикам языка Java сложно разработать систему …
98 java  gui 

4
Чем ссылка Java отличается от указателя C?
В C есть указатели, а в Java есть так называемые ссылки. У них есть что-то общее в том смысле, что все они указывают на что-то. Я знаю, что указатели в C хранят адреса, на которые они указывают. Ссылка также хранит адрес? Чем они отличаются, кроме того, что указатель более гибкий …
97 java  c  pointers  reference 

17
Является ли инкапсуляция еще одним из ООП слонов?
Инкапсуляция говорит мне сделать все или почти все поля приватными и выставить их через getters / setters. Но теперь появляются такие библиотеки, как Lombok, которые позволяют нам раскрывать все приватные поля одной короткой аннотацией @Data. Он создаст геттеры, сеттеры и конструкторы настроек для всех приватных полей. Может ли кто-нибудь объяснить …

10
Кто-нибудь может бросить вызов дяде Бобу за его любовь к удалению «бесполезных скобок»?
Я ненавижу ссылаться на контент Paywalled, но это видео показывает именно то, о чем я говорю. Точно 12 минут Роберта Мартина выглядит так: И говорит: «Одна из моих любимых вещей - избавиться от бесполезных скобок», когда он превращает это в это: Давным-давно, в далеком образовании меня учили не делать этого, …

5
Почему в Java вообще нет оптимизации для хвостовой рекурсии?
Из того, что я прочитал: причина в том, что нелегко определить, какой метод на самом деле будет вызываться, поскольку у нас есть наследование. Однако почему в Java, по крайней мере, нет оптимизации хвостовой рекурсии для статических методов и не реализован надлежащий способ вызова статических методов с помощью компилятора? Почему Java …

16
Нужно ли юным умам изучать концепции указателей?
Почему мастер Си Деннис Ричи ввел указатели в Си? И почему другие языки программирования, такие как VB.NET, Java или C #, устранили их? Я нашел несколько пунктов в Google, и я тоже хочу выслушать ваши комментарии. Почему они исключают концепции указателей в современных языках? Люди говорят, что C является основным …

17
Является ли навязывание одинакового формата кода всем разработчикам хорошей идеей?
Мы рассматриваем возможность введения в нашем проекте единого стандартного формата кода (автоформат с сохранением действий в Eclipse). Причина в том, что в настоящее время существует большая разница в форматах кода, используемых несколькими (> 10) разработчиками, что затрудняет работу одного разработчика над кодом другого разработчика. Один и тот же файл Java …

6
Лучше использовать assert или IllegalArgumentException для обязательных параметров метода?
В Java, что более рекомендуется и почему? Оба типа будут генерировать исключения, поэтому обработка их одинакова. assertнемного короче, но я не уверен, насколько это важно. public void doStuff(Object obj) { assert obj != null; ... } против public void doStuff(Object obj) { if (obj == null) { throw new IllegalArgumentException("object …

10
Как вы избегаете добытчиков и сеттеров?
У меня были некоторые трудности с дизайном классов. Я читал, что объекты раскрывают их поведение, а не данные; следовательно, вместо использования методов получения / установки для изменения данных, методы данного класса должны быть «глаголами» или действиями, действующими на объект. Например, в объекте «Счета», мы имели бы методы Withdraw()и Deposit()вместо того …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.