Мудрые мысли восточных старцев (о программировании)

  1. Если у тебя куча разных параметров, и ты не понимаешь, что с ними делать, засунь их все в ассоциативный массив и доставай по ключам.
  2. Задавай вопросы. Если некому или некогда, то обязательно запиши вопрос. Формулирование реально помогает приблизиться к результату.
  3. Что такое "создать форму":
    • создать шаблон формы
    • сделать валидацию входящих данных
    • написать код, обрабатывающий входящие данные (непосредственно логика)
    • проверять предварительно наличие данных в БД
    • выбпрасывать Exception-ы при ошибках и обрабатывать их
  4. Умножение (и вообще любые операции) дробных чисел - очень скользкий процесс в программировании, т.к. нули в конце дробной части хранятся в виде байтов, а также при циклическом делении могут как-то округляться. Следовательно одно число в итоге будет !== другом. При выводе пользователю не забывай привести число в корректный вид.
  5. Старайся сокращать код, используя функции. Подробно, конечно, понятнее, но так пишут только семиклассники.
  6. Ajax и submit. Внутри ajax-а есть свой механизм submit-a. Поэтому, даже если обработка формы происходит не по нажатию кнопки, а по клику на чём-либо, в обработчике можно использовать методы типа isSubmit() и isValid(), проверяющие, отправлена ли форма пользователем.
  7. Location (заголовок) принимает полный абсолютный путь (типа http://site.name/path/to/page). Но хардкодить его - плохая практика, т.к. код проекта становится "непереносимым". Т.е. если захочешь перенести сайт на другой домен, код придётся править (скорее всего ты не вспомнишь, где именно). Решение: описывай и протокол, и доменное имя, и путь внутри проекта с помощью методов типа getSchema(), get...(), generateUrl() или других, подобных.
  8. Неплохо перед началом работы с переменной/записи переменной в БД проверять, определена ли она. В случае, если нет, обрабатываем исключение, а не получаем ошибку undefined
  9. Какие-то опции в редакторе кода (например, в NetBeans-е) могут не работать. Это не всегда значит, что не работает код. Это может быть связано с тем, что новые разработки кодаещё не успели реализоваться в IDE. Поэтмоу обязательно пробуй запустить код, если IDE неадекватно на него реагирует, но ошибок нет.
  10. Минимизируй количество запросов к БД. Например, выноси все запросы, какие возможно перед началом цикла. А в цикле уже тащи информацию из переменной. Это существенно повысит производительность приложения.
  11. Конвертация данных из пользователепонятного вида в оптимизированный для хранения в БД должна происходить НЕПОСРЕДСТВЕННО перед записью в БД, и соответственно - обратно - НЕПОСРЕДСТВЕННО перед выводом пользователю. Чтобы не запутаться и не забыть одно из действий
  12. Назначения разных типов http-запросов (грубо говоря):
    • GET - запрос содержимого ресурса (передаёт путь, хочет получить то, что по этому пути лежит)
    • POST - передача данных от пользователя (обычно для создания объекта в БД)
    • PUT - передача данных от пользователя (обычно для редактирования объекта в БД)
    • DELETE - передача данных от пользователя (обычно для удаления объекта в БД)
  13. Никогда не вводи вручную id при создании новой строки в sql-запросе. При этом сбивается счётчик автозаполнения id-шников, и при попытках корректного заполнения будет выведена ошибка "key already exist".
    Вводи строки программыми средствами или с помощью ключ-значение (для всех столбцов кроме id)
    Если строка уже создана, то следует скорректировать sequence (для PostgreSql):
    ALTER SEQUENCE sequence_name RESTART WITH 6;

    где 6 - следующий предполагаемый id.

Comments

vedro-compota's picture

GET - запрос содержимого ресурса (передаёт путь, хочет получить то, что по этому пути лежит)
POST - передача данных от пользователя (обычно для создания объекта в БД)
PUT - передача данных от пользователя (обычно для редактирования объекта в БД)
DELETE - передача данных от пользователя (обычно для удаления объекта в БД)

у них есть и общепринятые значения, и они появились ещё до первых "БД")

_____________
матфак вгу и остальная классика =)