Объектно-ориентированные лучшие практики JavaScript? [закрытый]

1 Предполагается, что вам нужно показать текущее время в формате 09:30 PM . Это был бы довольно легкий подход. Даже если вы не нуждаетесь в этом в текущий момент времени, вы можете использовать приведенный ниже DateFormat для своих требований.

Calendar cal = Calendar.getInstance();
DateFormat outputFormat = new SimpleDateFormat("KK:mm a");
String formattedTime = outputFormat.format(cal.getTime());

2 Примечание: Следующий форматтер можно использовать для отображения того же времени в 24-часовом формате ( 21:30 ).

new SimpleDateFormat("HH:mm");

3 Однако, если вы хотите создать тот же формат, что и в моем первом пункте, лучше использовать следующий код, так как Java не поощряет использование StringTokenizer , Вы можете прочитать об этом здесь, http://docs.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html

Надеюсь, это поможет вам, спасибо!

    String startTime = "2013-02-27 21:06:30";
    String[] parts = startTime.split(" ");

    DateFormat outputFormat = new SimpleDateFormat("KK:mm a");
    SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm:ss");


    try {
        Date dt = parseFormat.parse(parts[1]);
        System.out.println(outputFormat.format(dt));
    } catch(ParseException exc) {
        exc.printStackTrace();
    }

251
задан gnovice 25 May 2009 в 10:32
поделиться

6 ответов

Использование `var` или нет

Вы должны ввести любую переменную с помощью оператора var , иначе она попадет в глобальную область видимости.

Стоит отметить, что в строгом режиме ( "use strict"; ) присвоение необъявленных переменных вызывает ReferenceError .

В настоящее время JavaScript не имеет области видимости блока. Школа Крокфорда учит вас помещать операторы var в начало тела функции , в то время как в Dojo Style Guide говорится, что все переменные должны быть объявлены в минимально возможной области . (Оператор let и определение , представленные в JavaScript 1.7, не являются частью стандарта ECMAScript.)

Это хорошая практика для связывания регулярно используемых объектов » properties в локальные переменные, так как это быстрее, чем искать всю цепочку областей видимости. (См. Оптимизация JavaScript для максимальной производительности и низкого потребления памяти .)

Определение вещей в файле или в `(function () {...}) ()`

Если вы не нужно обращаться к объектам за пределами кода, весь код можно заключить в выражение функции - это называется шаблоном модуля. Он имеет преимущества в производительности, а также позволяет минимизировать и скрывать ваш код на высоком уровне. Вы также можете убедиться, что он не загрязняет глобальное пространство имен. Функции упаковки в JavaScript также позволяют добавлять аспектно-ориентированное поведение. У Бена Черри есть подробная статья о шаблоне модуля .

Использование `this` или нет

Если вы используете псевдоклассическое наследование в JavaScript, вряд ли можно избежать использования this . Какой шаблон наследования использовать - дело вкуса. В других случаях см. Статью Питера Мишо о виджетах JavaScript без "this" .

Использование `function myname ()` или `myname = function ();`

function myname () - это объявление функции, а myname = function (); - это выражение функции, присвоенное переменной myname . Последняя форма указывает, что функции являются объектами первого класса, и с ними можно делать все, что угодно, как с переменной. Единственное различие между ними состоит в том, что все объявления функций поднимаются в верхнюю часть области видимости, что может иметь значение в некоторых случаях. В остальном они равны. function foo () - это сокращенная форма. Дополнительную информацию о подъеме можно найти в статье JavaScript Scoping and Hoisting .

Определение методов в теле объекта или использование «прототипа»

Это зависит от вас. В JavaScript есть четыре шаблона создания объектов: псевдоклассический, прототипный, функциональный и частичный ( Crockford, 2008 ). У каждого есть свои плюсы и минусы, см. Крокфорд в его видео беседах или получите его книгу Хорошие части , как Анон уже предложил .

Frameworks

Я предлагаю вам выбрать несколько фреймворков JavaScript, изучить их соглашения и стиль и найти те практики и шаблоны, которые вам больше всего подходят. Например, Dojo Toolkit предоставляет надежную структуру для написания объектно-ориентированного кода JavaScript, который даже поддерживает множественное наследование.

Шаблоны

Наконец, есть блог, посвященный изучению распространенных шаблонов и анти-шаблонов JavaScript . Также ознакомьтесь с вопросом Существуют ли стандарты кодирования для JavaScript? в Stack Overflow.

287
ответ дан 23 November 2019 в 02:54
поделиться

Сначала следует прочитать о программировании на основе прототипов , чтобы вы знали, с каким чудовищем вы имеете дело, а затем взгляните на руководство по стилю JavaScript. на странице MDC и JavaScript в MDC . Я также считаю, что лучше всего повысить качество кода с помощью инструмента, т.е. JavaScript Lint или другие варианты.

Лучшие методы объектно-ориентированного программирования больше похожи на то, что вы хотите найти шаблоны, чем на качество кода, поэтому посмотрите поиск Google: шаблоны javascript и ] Шаблоны jQuery .

8
ответ дан 23 November 2019 в 02:54
поделиться

Возможно, вы захотите ознакомиться с Секретами JavaScript-ниндзя Джона Ресига (jQuery). «Эта книга предназначена для опытного разработчика JavaScript и дает ему знания, необходимые для создания кроссбраузерной библиотеки JavaScript с нуля»

Черновик доступен через издателя: http://www.manning.com/resig/

У Дугласа Крокфорда также есть несколько хороших статей о JavaScript на своей домашней странице: http://www.crockford.com/

5
ответ дан 23 November 2019 в 02:54
поделиться
0
ответ дан 23 November 2019 в 02:54
поделиться

Я часто чувствую себя единственным здесь парнем, который использует MooTools для моего javascript.

Это означает M y O bject O riented Tools, mootools.

Мне очень нравится их подход к ООП в javascript. Вы также можете использовать их реализацию класса вместе с jquery, поэтому вам не нужно отказываться от jquery (хотя mootools также делает все это).

В любом случае, прочтите первую ссылку и посмотрите, что вы думаете, вторая ссылка ведет к документации mootools.

MooTools & Inheritance

Классы MooTools

5
ответ дан 23 November 2019 в 02:54
поделиться

Я собираюсь записать некоторые материалы, которые я прочитал, или подали заявку, так как я задал этот вопрос. Так что люди, читающие его, не будут разочарованы, поскольку большинство ответов - это замаскированные RTMF (даже если я должен признать, предлагаемые книги ДЕЙСТВИТЕЛЬНО хороши).

Использование Var

Предполагается, что любая переменная уже объявлена ​​в более высокий объем в JS. Поэтому, когда вам понадобится новая переменная, объявляйте ее, чтобы избежать неприятных сюрпризов, таких как манипулирование глобальной переменной, не замечая этого. Поэтому всегда используйте ключевое слово var.

В make объекта, var переменная private. Если вы хотите просто объявить общедоступную переменную, используйте для этого this.my_var = my_value .

Объявление методов

В JS существует множество способов объявления методов. Для объектно-ориентированного программиста наиболее естественным и в то же время эффективным способом является использование следующего синтаксиса:

Внутри тела объекта

this.methodName = function(param) {

/* bla */

};

Есть недостаток: внутренние функции не смогут получить доступ к "this" из-за забавного Объем JS. Дуглас Крокфорд рекомендует обойти это ограничение, используя обычную локальную переменную с именем «that». Таким образом, он становится

function MyObject() {

    var that = this;

    this.myMethod = function() {

        jQuery.doSomethingCrazy(that.callbackMethod);

    };

};

Не полагаться на автоматический конец строки

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

13
ответ дан 23 November 2019 в 02:54
поделиться
Другие вопросы по тегам:

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