Benshark는 2003 년 1 월 프로그램 개발에 종사했으며 19 개월 동안 일해 왔습니다. 그중에서도, 직장은 간헐적으로 경험이 부족하여 발전된 일 때문에 방황하고 고용 어려움으로 이어집니다! 이제 Bensha는 자격을 갖춘 프로그래머의 능력에 도달했습니다.
일반적으로, 새로 졸업 한 프로그래머의 개발 작업은 프로젝트의 하위 프로젝트의 모듈 일뿐입니다. 모듈은 코드 볼륨이 약 2,000 줄의 거의 5-6 형태를 가지고 있습니다. 실제로이 양의 작업은 졸업 설계만큼 좋지 않으므로 완료 할 수 있어야하지만 개발 시간은 학교에서 1-2 개월이 아닌 약 6-12 일의 근무일이 비교적 작습니다. 도와 줄 반 친구들도 있습니다. 따라서 개발자의 개발 도구, 구문, 프레임 워크 및 라이브러리에 능숙합니다. 또한 시스템 플랫폼 작동 메커니즘 및 알고리즘 요구 사항을 이해하고 무슨 일이 일어나고 있는지 알 수 있습니다. 프로그래머는 수동적으로보다 적극적으로 일할 수 있어야합니다. 정보를 찾기 위해 주도권을 잡고 동료에게 문의하며 동료들에게 알려지지 않은 작업에 대한 지원을 제공하도록 요청할 수 있습니다.
이 상어는 주로 데이터베이스 시스템 프론트 데스크의 개발 작업에 참여하므로 주로 데이터 시스템 프론트 데스크의 작업이 가장 무겁고 항상 사용자가 비판한다는 것을 설명하기 위해 공통 데이터베이스 구성 요소를 주로 사용합니다.
일반적 으로이 상어의 개발 단계는 다음과 같습니다.
0 작업 요구 사항을 이해합니다
1. 먼저 함수를 구현하십시오
2. 기능 예외 처리를 해결합니다
3. 사용자 친화 성을 달성하십시오
4 사용자 친화 성을 해결하십시오
미래에 데이터 볼륨이 크면 성능 문제가 사용자에게 맡겨집니다! 현재 작업을 따라 잡는 것이 중요합니다. 다음 구성 요소가 일반적으로 사용됩니다
Tedit tcombobox tlistview ttreeview tchecklistbox tlabel tdbgrid 타이밍 tmemo tbutton tdbchart tpanel tmaskedit tdateMepicker tpagecontrol
1. 코드 스타일은 인터뷰 중에만 코드 스타일이 면접관에 영향을 미칩니다. . 강제, 스타일 등이 필요하지 않습니다. Borland 도구를 사용하고 있기 때문에 Borland 스타일을 따르는 것이 가장 좋습니다.
2 구성 요소 속성 설정
1 tlabel :자가 크기 = 플레인;
2 TEDIT 최대 값 기본 입력 메소드 값 설정
3 tcombobox 선택이 허용되는 경우, 스타일 : = CSDROPDOWNLIST;
항목에 데이터를 추가 할 때
fontcombo-> items-> beginupdate ();
fontcombo-> 항목-> 추가 ( "xxx");
fontcombo-> items-> endupdate ();
데이터 tlistview ttreeview tdbgird가 비슷한 데이터 표시 차단 기능을 가지고 있지 않더라도
4 ttreeview 노드의 텍스트를 수정하지 않으면 readonly rowselect = true;
5 tlistview viewstyle vsreportreadonly rowselect = true;
6 tpagecontrol pagecontrol1.ActivePageIndex : = 0;
7 TDATETIMEPICKER DATEFORMAT : = DFLONG 시간 편집에 복사하면 DFLONG
edit.text : = dateTimeFormate ( "yyyy-mm-dd", datetimepicker1.date)
8 tbutton을 설정하는 Modalresult 힌트를 설정합니다
3 인터페이스 레이아웃이있는 구성 요소는 함께 배치되어 주변, 위쪽, 왼쪽 및 오른쪽과 정렬되어야합니다. 부모 컨테이너를 마시면 사람들에게 깔끔하게 제공합니다.
인터페이스 레이아웃 세부 사항
1) : 동일하거나 유사한 함수를 완성하는 프레임에 프레임 버튼을 사용하며 일반적으로 사용되는 버튼은 바로 가기를 지원해야합니다.
2) : 동일한 함수 또는 작업을 완료하는 요소는 마우스 이동의 거리를 줄이기 위해 중앙 집중식 위치에 배치됩니다.
3) : 함수에 따라 인터페이스의 로컬 블록을 나누고 프레임 상자로 둘러싸고 기능 설명 또는 제목이 있습니다.
4) : 인터페이스는 키보드 자동 브라우징 버튼 기능, 즉 탭 키를 누르는 자동 스위칭 기능을 지원해야합니다.
5) : 먼저 입력 해야하는 컨트롤과 인터페이스에 대한 중요한 정보는 탭 순서 앞에 있어야하며 창에서 더 눈에 띄는 위치에 있어야합니다.
6) : 동일한 인터페이스에서 10 개를 초과하지 않는 것이 가장 좋습니다.
7) : Pagination 인터페이스는 페이지 간의 빠른 전환을 지원해야하며 일반적으로 사용되는 조합 단축키 키스 Ctrl+탭
8) : 기본 버튼은 Enter 및 Select 작업을 지원해야합니다. 즉, Enter를 누른 후 기본 버튼의 해당 작업이 자동으로 실행됩니다.
9) : 쓰기 가능한 제어가 불법 입력을 감지 한 후 설명이 제공되어야하며 초점을 자동으로 얻을 수 있습니다.
10) : 탭 키의 순서와 컨트롤 순서는 현재 일관성이 있어야합니다.
11) : 선택 확률의 높은 바닥에 따라 확인란과 옵션 상자가 차례로 배열됩니다.
12) : 확인란 및 옵션 상자에는 기본 옵션 및 지원 탭 선택이 있어야합니다.
13) : 옵션 수가 동일하면 드롭 다운 목록 상자 대신 옵션 상자를 사용하십시오.
14) : 인터페이스 공간이 작을 때 옵션 상자 대신 드롭 다운 상자를 사용하십시오.
15) : 옵션 수를 작은 경우 옵션 상자를 사용하고 대신 드롭 다운 목록 상자를 사용하십시오.
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-> items-item [i] .caption;
edit-> text.trim (); // 전후에 공간이 있습니까?
char a [10];
memcpy (a, "/0", 10); // 변수의 공간을 지우십니까?
a [9] = 'i'; // 현재 함수는 전송 된 변수에 무언가를 쓰고 공간에 쓰고 싶다면 그것을 지우고 작성해야합니다.
// 함수를 사용하는 사람은 기능 변수를 호출합니다 발신자의 판단 조건은 그 효과를 잃게됩니다!
if (name.trim () == "delphi") 그러면 value가 유효합니까?
스위치 () {기본적으로 끊기;
5 기본 데이터, 프롬프트, 위치 및 친근감
인터페이스가 표시되면 데이터가 기본적으로 표시됩니다.
combobox1.itemindex : = 0;
일반적으로, 하나의 인터페이스를 사용하여 단일 쌍으로 새로운 추가 및 수정이 편집됩니다. 새로 추가 된 것이 완료되면 모든 구성 요소는 새로 추가 된 레코드에 위치해야하며 수정에 대해서도 마찬가지입니다. 삭제할 때 다음 레코드를 찾으십시오.
정렬 기능을하려면 ListView 및 DBgird 숫자 문자 날짜에 따라 제목을 클릭하십시오.
ListView 및 DBGIRD 선택한 데이터 초점이 버튼에서 이동하면 현재 선택한 행은 무엇입니까? !
void __fastcall tfrmgather760 :: lvdataCustomDrawItem (tcustomListView *발신자, tlistitem *항목, tcustomDrawState State, bool & default draw) // 선택한 줄에 노란색 바닥이 그려집니다.
{
if (sender-> selected! = null)
if (item-> index == sender-> selected-> index)
{
sender-> canvas-> brush-> color = clyellow;
sender-> canvas-> font-> color = clblue;
}
}
일반적으로 2 초를 초과하는 작업의 경우 기능에 있어야합니다.
Tcursor OldCursor;
OldCursor = Screen-> 커서;
스크린-> 커서 = 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 pagedown을 눌러 tpagecontrol switch 페이지를 만듭니다.
시작하다
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와 같은 데이터 표시 구성 요소가 입력하는 동안 쿼리가 입력되고 쿼리됩니다.
퍼지 쿼리를 지원하는 것은 '%xxx%'와는 다릅니다.
void __fastcall tfrmgather760 :: edt_namekeypress (Tobject *발신자, char & key)
{
if (key! = vk_return)
반품;
문자열 ssql;
ssql = "직원의 이름으로 이름으로 이름으로, 판매로 판매,";
SSQL + = "이름과 같은 이름은 '%" + 소문자 (edt_name-> text.trim ()) + "%'";
tfrmpubdlg *pubdlg = 새로운 tfrmpubdlg (this);
pubdlg-> executeQuery (SSQL);
pubdlg-> showmodal ();
..... .....
}
8 기타
모듈을 개발할 때 개별 장치 및 DFM이 공통 장치로 사용됩니다. 장치에서 캐릭터 전송 구조를 만듭니다
구조 표준 이름
{
문자열 이름;
문자열 제출 이름;
......
}; // 특히 테이블 이름이 변경 될 때 더 많은 단위로 일관성을 유지하는 것입니다.
std :: vector <string> serrorarry // 통합 오류 프롬프트
그리고 Delphi Resoucstring 부문은 자원이되고 현지화하기 쉽습니다.
추가 및 수정할 때 모든 데이터 검사는 저장 버튼 아래에 집중됩니다.
void __fastcall tform3 :: btn_saveclick (발신자)
{
if (edt_name-> text.isempty ())
{
showmessage ( "");
edit_name-> setfocus ();
반품;
}
modalresult = mrok;
}
학교에서 학생들의 졸업 설계의 대부분은 2 ~ 3 개의 레이어와 같은 데이터베이스입니다. 졸업 설계 프로그램을 진지하게 수행하고 급우들에게 테스트를 도와달라고 요청하고 더 많은 운영 편의를 제안하기 위해 돈을 써야합니다. 다른 사람들의 테스트를 통과하면 능력을 향상시킬 수 있으며 대부분의 코드는 예외 처리 및 사용자 친화적입니다! 작품으로 일자리를 찾을 때 좋은 회사를 찾는 것은 매우 쉬울 것입니다.
실제로, 데이터베이스 프론트 데스크 개발에 참여할 때, 중요한 것은 사용자 친화적 인 코드를 작성하는 것입니다!