Беншарк занимался разработкой программ в январе 2003 года и работает в течение 19 месяцев. Среди них работа перерыва - это все из -за дряблых вещей, разработанных из -за собственного отсутствия опыта, что приводит к блужданию и трудностям в трудоустройстве! Теперь Бенша достиг способности квалифицированного программиста.
Вообще говоря, задача разработки для вновь градуированных программистов является всего лишь модуль в подпроекте в проекте. Модуль имеет почти 5-6 форм с объемом кода около 2000 строк. Фактически, это количество задач не так хорошо, как выпускной дизайн, поэтому оно должно быть в состоянии выполнить, но время разработки относительно невелико, около 6-12 рабочих дней, а не 1-2 месяца в школе, и и Есть также одноклассники, чтобы помочь. Таким образом, он обладает опытом в инструментах разработки разработчиков, синтаксиса, фреймворков и библиотек. Кроме того, вы можете понять механизм работы системной платформы и требования к алгоритму и узнать, что происходит. Требуется, чтобы программисты могли активно работать, а не пассивно. Можно взять на себя инициативу, чтобы найти информацию, попросить коллег и попросить коллегов оказать помощь с неизвестными задачами.
Эта акула в основном участвует в задачах разработки стойки регистрации системы базы данных, поэтому в основном она использует общие компоненты базы данных, чтобы проиллюстрировать, что задачи стойки регистрации системы данных являются самыми тяжелыми и всегда подвергаются критике со стороны пользователей.
Как правило, этапы развития этой акулы:
0 Понять требования задачи
1. Сначала реализуйте функцию
2. Разрешение функции разрешения обработки исключений
3. Достигнуть удобство пользователя
4 Решить удобство пользователя
Проблема производительности будет оставлена пользователю, чтобы решить его, если в будущем объем данных будет большой! В настоящее время важно догнать задачу. Обычно используются следующие компоненты
TEDIT TCOMBOBOX TLISTVIEW TTREEVIEW TCHECKLILLEBOX TLABEL TDBGRID TIMAGE TMEMO TBUTTON TDBCHART TPANEL TMASKEDIT TDATETIMEPICER TPAGEECONTROL
1. Стиль кода. .
2 Настройки атрибута компонента
1 Tlabel: AutoSize = Flase;
2 TEDIT Установите значение значения MAXLENGET по умолчанию
3 tcombobox Если разрешен только выбор, стиль: = csdropdownlist;
При добавлении данных в свои элементы
FontCombo-> items-> granupDate ();
Fontcombo-> elects-> add ("xxx");
Fontcombo-> items-> endupdate ();
Независимо от того, сколько данных tlistView ttreeview tdbgird имеет аналогичные функции блокировки данных.
4 ttreeview Если вы не изменяете текст узла, вам необходимо readonly rowselect = true;
5 TlistView ViewStyle vSreporTreadonly roselect = true;
6 tpageControl pageControl1.activePageIndex: = 0;
7
Edit.text: = datetimeformate ("yyyy-mm-dd", datetimepicker1.date)
8 Tbutton, чтобы настроить отмену модалрессольтовой подсказки
3 Компоненты с той же макетом интерфейса должны быть размещены вместе и выровнены с окружением, вверх, вниз, влево и вправо. родительский контейнер, и, наконец, дайте его людям.
Детали макета интерфейса
1): Используйте кнопки кадра для кадров, которые выполняют те же или аналогичные функции, и обычно используемые кнопки должны поддерживать ярлыки.
2): Элементы, которые выполняют ту же функцию или задачу, расположены в централизованном положении, чтобы уменьшить расстояние от движения мыши.
3): Разделите локальные блоки интерфейса в соответствии с функцией, приложите их с помощью рамки и иметь описание или заголовок функции.
4): Интерфейс должен поддерживать функцию автоматического просмотра клавиатуры, то есть функция автоматического переключения для нажатия клавиши TAB.
5): Элементы управления, которые должны сначала вводить и важную информацию на интерфейсе, должны быть перед порядок вкладки, а также должны быть помещены в более заметное положение в окне.
6): Лучше всего не превышать 10 элементов управления на одном и том же интерфейсе.
7): Интерфейс странификации должен поддерживать быстрое переключение между страницами и широко используемые комбинированные ярлыки клавиши Ctrl+
8): Кнопка по умолчанию должна поддерживать ввод и выбирать операции, то есть после нажатия ENTER, соответствующие операции кнопки по умолчанию выполняются автоматически.
9): После того, как управление записи, можно определить незаконное ввод, должно быть указано описание, и фокус может быть автоматически получен.
10): Порядок ключей вкладок и порядок элементов управления должен быть последовательным.
11): флажки и окно опционов расположены один за другим в соответствии с высокой нижней частью вероятности выбора.
12): флажки и окны опций должны иметь параметры по умолчанию и выбор вкладок.
13): Когда количество параметров одинаково, используйте окно опциона, а не в раскрывающемся списке.
14): Используйте раскрывающуюся поле вместо окна опциона, когда интерфейсное пространство мало.
15): Когда количество параметров называется Small, используйте окно опциона, вместо этого используйте окно раскрывающегося списка.
16): Программное обеспечение с сильным профессионализмом должно использовать соответствующие профессиональные термины, в то время как универсальный интерфейс выступает за использование универсальных слов.
4 кода
1 Функциональный осмотр: Проверьте, реализованы ли все функции и ограничения, требуемые требованиями.
2 Проверка границ: выполните граничные проверки на таких функциях, как входные данные из разных типов данных или данные разных диапазонов
3 Нелегальный Проверка доступа: проверьте, существует ли ошибка незаконного доступа к памяти. Сообщение об ошибке ссылки для определения того, принадлежит ли она к этому типу ошибки, аналогично:
«… Не найдено», «Индекс списка вне границ…», «Нарушение доступа по адресу…»
4: Обратная информация Проверка и советы, которые должны руководствоваться.
5 Проверка на основе модуля: проверьте, правильны ли описание заголовка блока в этом блоке, описание каждой функции и описание аннотации. Инструкции по цитированию: есть ли дополнительные цитаты
// В частности, если файл заголовка C ++ содержит ненужные включающие, для других единиц возникнут ненужные проблемы.
Фактически, они называются тестами белых воротничков и контентом модульного тестирования. Если вы хотите написать тестовый код в соответствии с тестовой книгой, я думаю, что каждый разработчик не хочет этого! Но это не сработает, это легко совершать ошибки и затрудняет их доставку. Следовательно, очень необходимо понять методы тестирования, эти методы
В университетах есть введение в разработку программного обеспечения, и также должны быть приняты дизайнеры программного обеспечения. Всякий раз, когда вы пишете программу, вы будете осторожны, чтобы рассмотреть, какие ошибки могут возникнуть в разных ситуациях! Хотя будут ли использоваться переменные, которые будут использоваться при реализации функции? Значение действительно? Это переполнено? Вы очищаете пространство переменной? Это требование случая? Есть ли места впереди и после?
Эти суждения должны сначала быть написаны в функции и начале процесса!
if (treeview-> selected == null) // Будет ли переменная пустой?
затем вернуться;
std :: vecotr <int> intarray; // Это переполнен?
if (intarray <= 0)
Затем вернуться;
if (i <listview.items-> count) // Он переполнен и пересекает границу?
Edit-> text = listView-> eption-item [i] .caption;
Edit-> text.trim (); // Есть ли место до и после?
char a [10];
memcpy (a, "/0", 10); // Вы очищаете пространство переменной?
a [9] = 'i'; // На самом деле, если ваша текущая функция хочет что -то написать в передава
// Человек, который использует вашу функцию, записывает цикл, чтобы вызвать вашу функцию, принесет последнее значение, если в середине есть суждение Условия суждения вызывающего абонента потеряют их эффект!
if (name.trim () == ”delphi»), затем name = ”bcb»;
Switch () {case to Bree;
5 Данные по умолчанию, подсказки, позиционирование и дружелюбие
Когда интерфейс отображается, данные будут отображаться по умолчанию.
Combobox1.itemindex: = 0;
Вообще говоря, новые дополнения и модификации будут отредактированы в одной паре с использованием одного интерфейса. Когда новое дополнение будет завершено, все компоненты должны быть расположены на недавно добавленной записи, и то же самое относится и к модификации. При удалении найдите следующую запись.
ListView и DBGIRD, чтобы выполнить функцию сортировки, нажмите на заголовок, чтобы перейти вверх/вниз по цифровой дате буквы
ListView и DBGIRD Когда выбранная фокус данных перемещается на кнопке, какая строка в настоящее время выбирается? !
void __fastcall tfrmgather760 :: lvdatacustomdrawitem (tcustomlistview *sender, tlistitem *item, tcustomdrawstate cathy, bool & defaultdraw) // Нарисует желтое дно на выбранной линии
{
if (отправитель-> выбрал! = NULL)
if (item-> index == sender-> selected-> index)
{
Отправитель-> canvas-> brush-> color = clyellow;
Отправитель-> canvas-> font-> color = clblue;
}
}
Для операций, которые обычно превышают 2 секунды, это должно быть в функции.
Tcursor Oldcursor;
OldCursor = Screen-> Cursor;
Screen-> cursor = crsqlwait;
пытаться{ . Полем Полем Полем Полем Полем } __ Наконец-то {screen-> cursor = oldcursor;}
Процедура tform1.formkeydown (отправитель: tobject; var Key: Word; Shift: TshiftState);
Начинать
if (shift = []) и (key = vk_return), затем // заменить клавишу вкладки на Enter
Выполнить (wm_nextdlgctl, 0, 0);
Если key = vk_next, то // нажмите PageUp Pagegedown, чтобы сделать страницу переключения tpageControl
Начинать
Если PageControl.activePageIndex = pageControl.PageCount - 1 Тогда
PageControl.activePageIndex: = 0
еще
Pagecontrol.activePageIndex: = pageControl.activePageIndex + 1;
конец
иначе, если key = vk_prior тогда
Начинать
Если PageControl.activePageIndex = 0, тогда
PageControl.activePageIndex: = pageControl.PageCount - 1
еще
Pagecontrol.activePageIndex: = pageControl.activePageIndex - 1;
конец;
конец;
конец.
6 кнопок обмена
Всякий раз, когда операция завершена, некоторые кнопки станут недействительными, и при каких обстоятельствах они будут восстановлены до обоснованности? Хотя есть только один абзац, если он не установлен неэффективным, он часто вызывает различные смертельные ошибки! Поскольку вы не можете предсказать, как пользователи будут управлять вашим программным обеспечением, вы можете использовать Rose, чтобы нарисовать диаграмму состояния или использовать слово для его представления!
7 Производительность
Когда существует более 100 данных, вводятся компоненты отображения данных, такие как ComboBox ListBox TreeView ListView DBGRID и запрос во время входа.
Поддержка нечетких запросов - это не что иное, как «%xxx%».
void __fastcall tfrmgather760 :: edt_namekeypress (tobject *sender, char & key)
{
if (key! = vk_return)
возвращаться;
String ssql;
ssql = "Выберите имя как имя, продажи как продажи, от сотрудника";
ssql + = "где имя как '%" + нижний регистр (edt_name-> text.trim ()) + "%'";
Tfrmpubdlg *pubdlg = new tfrmpubdlg (this);
pubdlg-> executequery (ssql);
pubdlg-> showmodal ();
.....
}
8 других
При разработке модуля отдельные единицы и DFM используются в качестве общих единиц. Сделает структуру передачи символов в устройстве
Структурное табличное имя
{
String name;
Строка FileDName;
......
};
std :: ecector <string> serrorarry // Объединенная ошибка
И сегмент Delphi Resoucstring может быть ресурс и легче локализовать
При добавлении и изменении все проверки данных сосредоточены на кнопке Сохранить
void __fastcall tform3 :: btn_saveclick (отправитель)
{
if (edt_name-> text.isempty ())
{
ShowMessage ("" ");
Edit_name-> setfocus ();
возвращаться;
}
ModalResult = MROK;
}
Большинство выпускных проектов учащихся в школе являются базами данных, например, два или три уровня. Вы должны серьезно относиться к программе проектирования выпускников и потратить деньги, чтобы попросить своих одноклассников помочь вам пройти тест и предложить больше эксплуатационного удобства. Только путем прохождения тестов других людей может быть улучшена ваша способность, и большая часть кода является обработкой исключений и удобной для пользователя! Будет очень легко найти хорошую компанию, когда вы ищете работу со своими работами
Фактически, при участии в разработке стойки регистрации базы данных важна написать удобный код!