기타개발

github copilot 한달 사용 후기

rkrkrr0101 2024. 9. 6. 15:11

드디어 깃헙 코파일럿을 사용해봤음

결론부터 말하자면

총점:★★★★☆(3.8점정도인데 반올림)

 

평가는 3부분에 나눠서 내릴거임


가격:10달러

일단 비슷한애들중에서 가장 싼거같았음,무료도 몇개 있긴한데 다 평가는 안좋은편

4/5


코드생성:애매함..

  • 장점
    • 반복되는 코드는 함수명을 비슷하게지으면 적당히 맘에들게 복사해주는편(내가 컨cv한게 아니라서 못미더워서 더 자세히보게되고,그래서 내가컨cv한거보다 실수도 덜하는거같음 체감상)
    • 테스트로직은 나름 잘 짜줌,코드제너레이팅에서는 여기가 도움많이됨,테스트 한두개만 만들고 옆에 코파일럿버튼누르면 다른거도 대충 테스트는 다 만들어져있음
    • 인터페이스가 있으면 그걸 사용하는건 잘함(서비스나 컨트롤러에서 다 만들어둔거 조합하는건 잘함),그래서 테스트도 잘짜나봄
  • 단점
    • 인텔리제이 기준 자동import가 되지않아서 일일히 임포트해줘야함
    • 도메인관련,즉 비즈니스로직부분에서는 거의 도움이 되지않음
    • dto를 받는 코드같은거는 왠진모르겠는데,헷갈릴게 없어보이는데 엄청 헷갈려함,5개중 2개정도 틀리는편임

3/5


 

chat:가장 도움이 되는부분,코파일럿의 핵심

  • 장점
    • 내 코드를 전부 컨텍스트에 담아서 읽고 대답하기때문에,개떡같이 말해도 찰떡같이 알아들음
    • 현재 뜬 예외도 딱히 복붙하지않아도 읽고 대답해줌
    • 이름을 정말 잘지어줌
  • 단점
    • 코드와 관련없이,chatGpt처럼 사용할순없음
    • 현재기준 당연한 소리지만,당연히 좀 더 나은 gpt4정도 수준의 대답이지 완벽한 대답은 아니고 그냥 내 친구가 대답해준다고 생각할정도의 응답퀄리티임,실수도 하고 맘에안드는부분도 있고 그럼

예시를 들면

질문:rankFetch().forEach { 이부분을 좀 더 깔끔하게 만들고싶은데 추천해줄수있어? 

 

대답으로

계획
1.rankFetch()의 결과를 map을 사용하여 변환합니다.
2.캐시가 유효한 경우와 그렇지 않은 경우를 partition을 사용하여 분리합니다.
3.캐시가 유효하지 않은 경우에만 createReport를 호출하고, 결과를 저장합니다.
4.최종적으로 모든 Report를 반환합니다.

private fun fetchReports(): List<Report> {
    val (cached, notCached) = rankFetch().partition { reportCachesRepository.isCacheValid(it) }

    val cachedReports = cached.map { reportCachesRepository.findOne(it) }
    val newReports = notCached.map {
        val report = responser.createReport(it)
        reportCachesRepository.save(report)
        report
    }

    return cachedReports + newReports
}

이런식으로 대답이 옴

또한 여기서 맘에 안드는걸 다시 말하면

질문:report의 순서도 중요해서 저렇게하면 순서가 섞여서 안돼

대답:

1.rankFetch()의 결과를 map을 사용하여 변환합니다.
2.각 항목에 대해 캐시가 유효한지 확인하고, 유효한 경우 캐시에서 가져오고, 그렇지 않은 경우 새로 생성합니다.
3.원래 순서를 유지하면서 결과를 반환합니다.

val reports = rankFetch().map { assetName ->
    if (reportCachesRepository.isCacheValid(assetName)) {
        reportCachesRepository.findOne(assetName)
    } else {
        val report = responser.createReport(assetName)
        reportCachesRepository.save(report)
        report
    }
}
return reports

이런식으로 대답을 해줌

 

그리고 예외가 왜떴는지 물어보는 경우도

질문:현재 테스트에서 뜨는 예외는 왜뜨는걸까 id값 중복이라서 뜨는거같은데 잘모르겠어

이렇게만 던져도

 

대답:

예외 메시지 A different object with the same identifier value was already associated with the session는 Hibernate에서 동일한 식별자 값을 가진 두 개의 다른 객체가 동일한 세션에 존재할 때 발생합니다. 이는 주로 다음과 같은 상황에서 발생할 수 있습니다:  
1.동일한 식별자 값을 가진 객체를 두 번 저장하려고 할 때: 이미 세션에 존재하는 객체와 동일한 식별자 값을 가진 새로운 객체를 저장하려고 할 때 발생할 수 있습니다.
2.세션에 이미 존재하는 객체를 다시 로드하려고 할 때: 동일한 식별자 값을 가진 객체가 세션에 이미 존재하는데, 이를 다시 로드하려고 할 때 발생할 수 있습니다.
이 문제를 해결하기 위해서는 다음과 같은 방법을 고려할 수 있습니다:  
1.객체가 이미 존재하는지 확인한 후 저장: 객체를 저장하기 전에 동일한 식별자 값을 가진 객체가 이미 세션에 존재하는지 확인하고, 존재하면 업데이트하고, 존재하지 않으면 저장합니다.
2.세션을 명시적으로 관리: 필요에 따라 세션을 명시적으로 관리하여 동일한 식별자 값을 가진 객체가 세션에 중복되지 않도록 합니다.

 

이런식으로 대답이 옴

즉 예외를 복사해서 붙여놓고 이럴필요없이 그냥 바로 인식함

 

그리고 얘가 제일 잘하는게 이름추천임

이미 만들어진 메서드의 이름을 바꾸고싶을때,해당 메서드의 책임과 내 생각을 적어서 보내면 괜찮은 이름을 추천해줌

 

단점은..단점이라고 해야하는진 모르겠지만 개발관련이 아닌 질문이나 헛소리를 하면 칼같이 씹음 ㅋㅋ

 

질문:오늘저녁뭐먹지

대답:저는 그 질문에 답변할 수 없습니다. 기술적인 질문이나 코드 관련 도움을 요청해 주세요.

 

4.5/5


이렇게 해서 평균 3.8점정도인데,만삼천원내고 쓰기엔 괜찮은 서비스같음

chat만 써도 저정도는 감수할만하다고 생각듬

chat도 맘에 안드는 대답이 가끔 있긴하지만,gpt쓸때보다 컨텍스트가 늘어서그런지 훨씬 괜찮음

그리고 gpt로 질문 던지는거보다 훨씬 편하게 던질수있어서 좋고,검색보다 머리쓸게 줄어서 편함

 

gpt는 친구한테 카톡으로 물어보는 느낌이라면

얘는 진짜로 옆에 친구한명 데리고 같이하는느낌임

 

아 그리고 처음엔 계속 영어쓰는데,한글쓰라고 계속 요청하고,요청메시지도 계속 한글로 보내다보면 포기하고 얘도 한글쓰니까 첨엔 계속 한글로 대답해달라고 하면됨