code review 작업

5191 단어 Code Review
다음은 프로그래밍 동료 12061166 송천서의 코드 리뷰입니다.
 
5가지 이점:
1. 코드의 스타일이 우수하고 주석이 많지 않지만 필요한 주석이 있다. 예를 들어 다음과 같다.
//      
        //  mode1       
        //  mode2           
        //  mode3           
        enum modes { mode1, mode2, mode3 };
        //           ,       
        static modes mode; //          -        static ArrayList words = new ArrayList(); //          -        static ArrayList wordsEx = new ArrayList(); //         Word       static Dictionary<Word, Word> hashWords = new Dictionary<Word, Word>(); //   -    ,           ,                    static Dictionary<Word, Word> hashWordsEx = new Dictionary<Word, Word>(); //      static string directoryPath;

2. 코드의 건장성이 양호하여 여러 가지 특수한 상황에 대해 오류 처리를 하고 오류 정보를 출력할 수 있다. 예를 들어 다음과 같다.
        //              
        static void oops1()
        {
            System.Console.WriteLine(usage);
            Environment.Exit(-1); }
        //              
        static void oops2()
        {
            System.Console.WriteLine("Invalid directory path"); Environment.Exit(-2); }

3. Main 함수는 짧고 세련되며 함수 간의 결합도가 낮고 집합도가 높으며 한 함수는 가능한 한 한 한 한 가지 상황만 처리한다.
//      
        static void Main(string[] args)
        {
            //       
 checkFormat(args); //        config(args); //        countWords(); //            //           ,    ,      string,     sortWords(); //         writeFile(); }

4. 정규 표현식의 사용에 익숙하다.
5. 최종판 프로그램은 이전에 다중 라인으로 완성된 코드를 포기하고 현명한 선택을 한다!
세 가지 작은 흠집:
1. 어떤 함수는 정의되었지만 인용된 적이 없고, 상응하는 주석을 달지 않아 표면 함수가 무용하다
public int Compare(Object wa, Object wb)
        {
            if (((Word)wa).times == ((Word)wb).times)
            {
                return ((Word)wa).word.CompareTo(((Word)wb).word);
            }
            else
            {
                return ((Word)wb).times - ((Word)wa).times;
            }
        }

2. 명명 규칙은 기본적으로 파스카의 명명 범례를 따를 수 있지만 일부 부분은 흠이 있다. 예를 들어 다음과 같다.
        static Regex re1p = new Regex(" [a-zA-Z]{3}[a-zA-Z0-9]*");
        //    2,  +    +  
        static Regex re2 = new Regex(@"(_|\b)[a-zA-Z]{3}[a-zA-Z0-9]* [a-zA-Z]{3}[a-zA-Z0-9]*");
        //    2      ,   3         
        static Regex re2p = new Regex(" [a-zA-Z]{3}[a-zA-Z0-9]* [a-zA-Z]{3}[a-zA-Z0-9]*");

re2와re2p는 말 그대로 주석이 있어서 좋지만 명명 규범이 좋지 않다
3. 상기 코드에 대해서도 extend 모드에서 빈칸에 따라 다음 일치하는 단어를 찾으려는 것을 알 수 있다. 그러나 정규 일치 효율이 비교적 낮기 때문에 빈칸이 있는 단어+빈칸+단어를 다시 열 필요가 없다. 일치하는 문자열의 빈칸으로 이동하여 일치하는 단어를 계속 아래로 찾으면 된다. 정규를 사용할 기회가 절반으로 줄어든다.일정 시간 성능을 높일 수 있다.
 4.Word 클래스의 정의에는 주석이 없습니다. 필요한 주석을 추가하는 것을 권장합니다.
 
두 가지 팁:
1. 함수를 다시 만들어서 정렬을 완성할 필요가 없다. 해당하는compare 함수를 다시 불러온 후 다음 문장으로 정렬 출력 작업 중의 정렬 작업을 간결하게 완성하여 코드량을 크게 줄일 수 있다.
                var collection = from word in a
                                orderby word descending
                                select new StringBuilder(word.wordtodisplay).Append(": ").Append(word.Frequency);

 2.공정이 완성된 후, 이미 주석해 놓은 무용 코드는 삭제를 고려하여 코드 스타일을 더욱 아름답게 하고, 유지보수원이 코드를 보기 편리하게 할 수 있다

좋은 웹페이지 즐겨찾기