Наилучшая практика именования классов Java "User"? - PullRequest
5 голосов
/ 06 октября 2010

Я собираюсь создать класс User для моего проекта. Есть какие-либо мнения относительно того, является ли плохой практикой создание такого общеизвестного класса? Я мог бы дополнить его префиксом, характерным для моего проекта.

Ответы [ 6 ]

3 голосов
/ 06 октября 2010

Я бы предложил вам определенно добавить префикс конкретного приложения к вашему классу пользователя. «Пользователь» слишком распространен и расплывчат. Вы можете легко использовать API с классом «Пользователь» или интерфейсом. Хотя последние IDE позволяют относительно легко реорганизовать ваш код, было бы чище и проще, если бы у вас был класс User, специфичный для приложения.

3 голосов
/ 06 октября 2010

Это то, для чего пакеты .

1 голос
/ 06 октября 2010

Я всегда стараюсь использовать общие имена, такие как Пользователь, для ясности.Просто убедитесь, что имена взяты из проблемной области и существующего словаря проекта.Будьте внимательны к неясностям, и если они возникнут, измените имя класса.Современные IDE с поддержкой автоматического рефакторинга делают это легко.

1 голос
/ 06 октября 2010

Использование общих имен не является плохой практикой до тех пор, пока вы не опишите имя как таковое для функциональности класса. Имейте в виду, чтобы создать надлежащие пакеты, которые могут более конкретно определить ваш класс.

0 голосов
/ 06 октября 2010

Это имя вряд ли будет использоваться любым общедоступным API, поэтому приложение может использовать его.

0 голосов
/ 06 октября 2010

Вы должны использовать Java package s, чтобы избежать конфликта имен. Нет ничего плохого в использовании общего имени, просто обязательно поместите его в собственный пакет. Например, вы можете иметь следующую структуру:

com/
  yourwebsite/
      yourproject/
            userdata/
                 User.java

Затем вы начинаете файл "User.java" с:

package com.yourwebsite.yourproject.userdata;

Когда вы импортируете его, вы будете использовать:

import com.yourwebsite.yourproject.userdata.User;
...