클린코드에 대한 소감.

2849 단어 면접 문제
최근에 Leetcode를 하고 있어요. 그리고 cleancodehandbook을 봤어요. 
나는 이전에 ACM 경연 훈련을 받은 적이 없어서 clean codes와fast code를 쓰는 데 확실히 부족하다.구체적인 표현은 다음과 같다.
1) 스마트한 IDE에서 벗어나면 코드가 나오지 않는다. 세 글자를 치면 hint list에서 옵션을 제공해서 선택할 수 있다.면접을 볼 때 모두 OJ에 있었고 OJ에는 hint list뿐만 아니라 문법 힌트도 없었다.LeetCode를 시작한 후에 저는 Sublime Text+CMD로 프로그래밍을 강요했습니다. 지금은 이런'초라한'개발 환경에 익숙해진 후에 효율이 오히려 높다고 느꼈습니다.만약 작은 프로그램이나 프로젝트가 크지 않다면,sublime로 개발하는 것을 정말 고려할 수 있다.또 다른 수확은 자신의 코드 통과율이 높아지기 시작했다는 것이다.문법 힌트가 없기 때문에 자신은 무의식적으로 문법을 검사한 다음에 자바 API에서 문서를 찾는다.만약 이전에 만부득이한 것이 아니었다면 JAVA는 만년 동안 Java API를 보지 않고 모두 Eclipse에 의존했을 것이다.
IDE를 떠난 후, 지금은 심지어 두 번 컴파일하면 통과할 때도 있다.예전에는 공책으로 Hello World를 쓰면 오류가 발생할 수 있었다.
2) 코드가 비대하고 프로세스 제어가 혼란스럽다.아마도 이전에 쓴 것들은 모두 완전히 응용된 것일 것이다. 강한 논리가 없기 때문에 기본적으로 머리를 쓰지 않고 코드를 쓰는 것이 안드로이드이다.com >>baidu>>google>>android.com>>github>>CSDN, 어떤 기능이 어떻게 실현되는지 보고 쓰기 시작했습니다.지금부터 leetcode를 쓰기 시작하면 어떤 문제는 어렵지 않지만 모두 순수한 계산으로 사고방식, 알고리즘에 대한 요구가 높다.그동안의 훈련과 알고리즘 도론을 읽으며 자신이 이 방면에서 좀 나아졌다고 생각했지만 기본기는 아직 튼튼하지 않다.
여기에 두 개의 코드를 붙여서 자신의 진보를 기록한다.
첫 번째 코드 코드는 비대하고 코드 운행 경로가 혼란스러우며 슈퍼마켓을 운행하는데 통과하지 못했다.
/**
*Implement strStr().
*Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
*/
public class Solution {
    public int strStr(String haystack, String needle) {// haystack=a, needle=a
    if(needle.length()==0) return 0;
     for(int i=0;i
이전에 저는 i, j 같은 변수명을 사용하는 것에 반감을 느꼈는데 지금은 짧은 변수명에 대한 사용이 양호하고 규칙적으로 사용되면 사실 사용하기에 괜찮다는 것을 발견했습니다.예를 들어 현재 나의 모든 코드에서 i는 머리를 대표하거나 1, j는 꼬리 또는 2를 대표하는데 이렇게 사용하면 가독성이 사실 나쁘지 않다.
이상의 코드 프로세스 제어는 과거에 복잡했다.이것은 폭력적인 해독 알고리즘으로 사고방식이 안팎에서 순환하고 안팎에서 조건을 벗어나 마지막으로 안팎이 해야 할 조작을 고려한다.
1) 바깥쪽은haystack에 대한 자모마다, 안쪽은needle에 대한 자모마다.
2) 바깥쪽의 점프 조건은 a>i 바늘이haystack을 가리키는 것이다.length()-needle.length() 내부 점프 조건: a>j 지침이needle 팀 꼬리 b>*i!=*j  
3) 외층 집행, 반환-1, 내층 집행, 전등자 서열이 나타나는지 검사하고 있으면 i값을 반환한다.
다음은 상기 사고방식에 따라 나만의 클랜 코드를 붙여서
public class Solution {
    public int strStr(String haystack, String needle) {
        for(int i=0;i

마지막으로 cleancode에 제시된 코드를 붙이면 큰 차이가 있고 남의 코드가 더욱 clean인 것을 알 수 있다.결벽증
public class Solution {
    public int strStr(String haystack, String needle) {
        for(int i=0;i	int j=0;
        	for(;j	i=i-j;
        	if(j==needle.length()) return i;
        }
        return -1;
    }
}

좋은 웹페이지 즐겨찾기