Лучшие практики Windows Registry

Слишком много вложенных операторов IF - плохая практика, потому что их трудно отлаживать. Вместо этого вы должны разбить их на маленькие операторы

Например:

<?php
session_start();
if !(isset(

Слишком много вложенных операторов IF - плохая практика, потому что их трудно отлаживать. Вместо этого вы должны разбить их на маленькие операторы

Например:

[110]

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

POST['fullname']) || isset(

Слишком много вложенных операторов IF - плохая практика, потому что их трудно отлаживать. Вместо этого вы должны разбить их на маленькие операторы

Например:

[110]

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

POST['email']) || isset(

Слишком много вложенных операторов IF - плохая практика, потому что их трудно отлаживать. Вместо этого вы должны разбить их на маленькие операторы

Например:

[110]

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

POST['phone'])) { echo "Your enquiry could not be sent for some reason; please try sending us again."; exit(); } $fullname =

Слишком много вложенных операторов IF - плохая практика, потому что их трудно отлаживать. Вместо этого вы должны разбить их на маленькие операторы

Например:

[110]

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

POST['fullname']; $email =

Слишком много вложенных операторов IF - плохая практика, потому что их трудно отлаживать. Вместо этого вы должны разбить их на маленькие операторы

Например:

[110]

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

POST['email']; $phone =

Слишком много вложенных операторов IF - плохая практика, потому что их трудно отлаживать. Вместо этого вы должны разбить их на маленькие операторы

Например:

[110]

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

POST['phone']; $headers = "MIME-Version: 1.0"."\r\n"; $headers.= "Content-type:text/html;charset=UTF-8"."\r\n"; $headers.= 'From: <'.$email.'>'."\r\n"; $mailto = "google@gmail.com"; $subject = "Web Design & Development Service"; $msg2send = "Hi $fullname, Hi, we have received one fresh query for you. Name: $fullname Email: $email Phone: $phone "; $msg2send = nl2br($msg2send); if (mail($mailto, $subject, $msg2send, $headers)) { echo "Thanks for writing to us. We will get back to you as soon as possible."; } else { echo "Please fill out all the mandatory fields."; } ?>

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

17
задан Sean 27 March 2009 в 21:08
поделиться

8 ответов

Для меня, простых пользовательских элементов конфигурации и пользовательских данных лучше, чтобы быть сохраненным или в простом конфигурационном XML-файле, дб SQLLite или в SQL Server MS Компактный дб. Точный носитель зависит от специфических особенностей реализации.

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

11
ответ дан 30 November 2019 в 10:54
поделиться

Я собираюсь получить противоположное представление.

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

Marcelo MD совершенно прав: Хранение вещей как операционный процент, завершенный в реестре (или любой другой не volitile устройство хранения данных), является ужасной идеей. С другой стороны, хранить данные как последний раз используемые файлы очень хорошо - реестр был создан для просто такой проблемы.

Много других комментаторов на этом сообщении, говорящем о списке MRU, обсудили проблему того, что происходит, когда список MRU выходит из синхронизации из-за сбоев приложения. Я задаюсь вопросом, почему хранение списка MRU в плоском файле в устройстве хранения данных в расчете на пользователя немного лучше?

Я также не уверен, каковы "последствия безопасности" того, чтобы хранить Ваши данные в реестре. Реестр так же безопасен как файловая система - реестр и файловая система используют тот же механизм ACL для защиты их данных.

Если Вы собираетесь хранить свои пользовательские данные в файле, необходимо ли абсолютно поместить данные в %APPDATA %\CompanyName\ApplicationName, по крайней мере - тот путь, если два различных разработчика создают приложение с тем же именем (сколько "приложения" менеджера Медиа там там?) у Вас не будет коллизий.

15
ответ дан 30 November 2019 в 10:54
поделиться

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

Мое эмпирическое правило состоит в том, чтобы использовать реестр только для общения с ОС. Ассоциации типа файла, записи деинсталлятора, процессы для выполнения при запуске те вещи, очевидно, должны быть в реестре.

Но данные, которые являются для использования в Вашем приложении только, принадлежат файла в Вашей папке App Data. (whiever один из 3 + папки App Data Microsoft в настоящее время хочет, чтобы Вы использовали, так или иначе),

7
ответ дан 30 November 2019 в 10:54
поделиться

Поскольку у каждого пользователя есть пространство для каталога в Windows, уже выделенном тому, чтобы хранить данные пользователя приложения, я использую его, чтобы хранить данные уровня пользователя (предпочтения, например) там.

В C# я получил бы его путем выполнения чего-то вроде этого:

Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData);

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

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

Я думаю, что Microsoft поощряет использование изолированного устройства хранения данных вместо реестра Windows.

Вот статья, которая объясняет, как использовать ее в .NET.

Можно найти те файлы в Windows XP в соответствии с Документами и Настройками \\Локальное Приложение Settings\устройство хранения данных Data\Isolated. Данные находятся в .dat файлах

2
ответ дан 30 November 2019 в 10:54
поделиться

Я дифференцировался бы:

С одной стороны, существуют данные специфичной для приложений конфигурации, которые необходимы, чтобы приложение работало, например, IP-адреса для соединения с, который папки использовать для какой файлы и т.д., и не тривиальное на пользовательские настройки. Те, которые я вставил файл конфигурации, ini формат для простого материала, xml, если это становится более сложным.

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

Я главным образом делаю это как istmatt Саис: Я храню файлы конфигурации в %APPDATA% папка. Обычно в %APPDATA%\ApplicationName, Мне не нравится значение по умолчанию.NET APPDATA%\CompanyName\ApplicationName\Version, тот уровень детализации и сложность контрпродуктивны для большинства малых и средних приложений.

Я не соглашаюсь с примером Marcelo MD того, чтобы не хранить недавно используемые файлы в реестре. IMO это - точно энергозависимый вид пользователя определенная информация, которая может храниться там. (Его пример того, какой не сделать, очень хорош, хотя!)

2
ответ дан 30 November 2019 в 10:54
поделиться

Если Ваше приложение будет развернутым "на предприятии", имейте в виду, что администраторы могут настроить реестр с помощью инструментов групповой политики. Например, если бы Firefox использовал реестр для вещей как прокси-сервер, то он сделал бы развертывание снимком, потому что администратор может использовать стандартные инструменты в активном каталоге для установки его. Если Вы используете что-либо еще, я не думаю, что такие вещи могут быть сделаны очень легко.

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

4
ответ дан 30 November 2019 в 10:54
поделиться

Мне кажется легче думать о том, что Вы не должны помещать там. например: динамические данные, такие как "последний файл редактора, открытый" и на опции проекта. Это является действительно раздражающим, когда Ваше приложение теряет синхронизацию с реестром (удаление файла, системный катастрофический отказ, и т.д.) и получает информацию, которая больше не допустима, возможно заводя в тупик пользователя.

В более раннем задании я видел парня, который сохранил передачу данных completness процент там, Пишущий новые значения в каждом 10k или таким образом, и имея GUI получают это значение каждую секунду, таким образом, это могло показать в строке заголовка.

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

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