Как я переключаюсь между Windows и новыми строками UNIX в Netbeans?

Программирование на интерфейсе означает соблюдение «контракта», созданного с использованием этого интерфейса.

Это единственное, что неправильно понимают в интерфейсах.

Нет никакого способа принудить любой такой контракт с интерфейсами. Интерфейсы, по определению, не могут указывать поведение вообще. Классы, где поведение происходит.

1114 Это ошибочное убеждение настолько широко распространено, что многие люди считают его общепринятым мнением. Это, однако, неправильно.

Итак, это утверждение в OP

Почти в каждой книге по Java, которую я читаю, рассказывается об использовании интерфейса как способа обмена состояниями и поведением между объектами

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

Можно предположить, что люди будут реализовывать интерфейс, обеспечивающий поведение, подразумеваемое именем его методов, но это совсем не то же самое. И это не накладывает никаких ограничений на то, когда такие методы вызываются (например, что Start должен вызываться перед Stop).

Это утверждение

Требуется для шаблонов типа GoF, таких как шаблон посетителей

, также неверно. Книга GoF использует абсолютно нулевые интерфейсы, поскольку они не были особенностью языков, используемых в то время. Ни один из шаблонов не требует интерфейсов, хотя некоторые могут их использовать. IMO, паттерн Observer - это тот, в котором интерфейсы могут играть более элегантную роль (хотя в настоящее время паттерн обычно реализуется с использованием событий). В шаблоне «Посетитель» почти всегда требуется базовый класс «Посетитель», реализующий поведение по умолчанию для каждого типа посещаемого узла, IME.

Лично я думаю, что ответ на этот вопрос имеет три аспекта:

  1. Интерфейсы воспринимаются многими как серебряная пуля (эти люди обычно работают под неправильным пониманием «контракта», или думают эти интерфейсы магически развязывают их код)

  2. Java-люди очень сосредоточены на использовании фреймворков, многие из которых (справедливо) требуют классов для реализации своих интерфейсов

  3. Интерфейсы были лучшим способом сделать некоторые вещи до того, как были введены дженерики и аннотации (атрибуты в C #).

Интерфейсы - очень полезная языковая функция, но ими злоупотребляют. Симптомы включают в себя:

  1. Интерфейс реализован только одним классом

  2. Класс реализует несколько интерфейсов. Часто рекламируется как преимущество интерфейсов, обычно это означает, что рассматриваемый класс нарушает принцип разделения интересов.

  3. Существует иерархия наследования интерфейсов (часто отражается иерархией классов). Это ситуация, которую вы пытаетесь избежать, используя интерфейсы в первую очередь. Слишком большое наследование - это плохо, как для классов, так и для интерфейсов.

Все эти вещи - запахи кода, ИМО.

19
задан Exander 12 June 2009 в 12:40
поделиться

5 ответов

Цитата из Netbeans Wiki :

Редактор NetBeans учитывает разделитель строк, используемый в существующем файле. Он считывает файл в экземпляр документа редактора следующим образом:

  • Считывается первая строка файла и определяется тип разделителя строк - предполагается, что он будет одним из

    • "\ n" (LF) - Unix
    • «\ r» (CR) - Mac
    • «\ r \ n» (CRLF) - Windows
  • Тип разделителя строк запоминается в экземпляре документа для будущей операции сохранения.

  • Все считываются строки в файле, и их разделитель строк (независимо от его типа) переводится в "\ n", который является единственным типом разделителя строк, с которым может работать редактор.
  • После операции сохранения каждый "\" n "в документе переводится в запомненный тип разделителя строк.

Примечание:

26
ответ дан 30 November 2019 в 02:56
поделиться

Существует свойство, зависящее от платформы, которое вы можете использовать для создания кроссплатформенного кода. См. http://java.sun.com/docs/books/tutorial/deployment/applet/properties.html

String newline = System.getProperty ("line.separator");

1
ответ дан 30 November 2019 в 02:56
поделиться

Думаю, вы не можете. NB будет использовать собственный формат ОС, в которой он запущен. Если у вас есть проблемы с этим, есть задача Ant FixCRLF .

0
ответ дан 30 November 2019 в 02:56
поделиться

Я не знаю, как это сделать с помощью NetBeans, но если вы храните свой код в репозитории Subversion, вам может потребоваться изучить свойство svn svn: eol-style.

1
ответ дан 30 November 2019 в 02:56
поделиться

Какова ваша цель - иметь рабочий процесс, использующий только концы строк Unix?

Как уже отмечалось, в Netbeans нет функций для преобразования из одной строки заканчиваясь другим.

Новые файлы PHP, созданные в NetBeans (Файл> Новый файл> PHP), по умолчанию имеют окончания строк Unix.

На самом деле это не дает вам той функциональности, о которой вы просили, но Netbeans будет уважать файл окончания существующих файлов и создавать новые файлы PHP с окончаниями строк Unix.

-1
ответ дан 30 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: