본문 바로가기

Programming

[Kotlin] 알아가기 - 5 1. Generics 일단 아래 소스를 보자. list를 초기화 하고 초기 값을 할당하였다. Finder라는 클래스를 만들고 findItem 메서드를 구현했다. (using Trailing Lambda) findItem 메서드를 통해 사용자가 원하는 문자열을 찾는 간단한 기능의 예제이다. fun main(){ val listOfItems = listOf("Kotlin", "Java", "WPF") val finder = Finder(listOfItems) finder.findItem("WPF"){ println("Found $it")//Found WPF } } class Finder(private val list: List){ fun findItem(element: String, fountItem: (e.. 더보기
[Kotlin] 알아가기 - 4 (OOP) 1. Object Oriented Programming 코틀린은 객체지향프로그래밍언어이다. 일반적으로 명사가 객체가 되고 동사가 객체 내부에서 메서드가 된다. 예를들어 '자동차가 시속 100km/h로 주행중이다' 라는 문구에서 자동차는 객체이고 시속 100km/h는 멤버변수, 주행중은 메서드로 구성할 수 있다. fun main(){ val car = Car("Green", "Model3") val secondCar = Car("Black", "ModelX") println("Car color: ${car.color}, model: ${car.model}") println("Second car color: ${secondCar.color}, model: ${secondCar.model}") car.spee.. 더보기
[Kotlin] 알아가기 - 3 (Collections) 코틀린에서 Collections는 3가지 종류가 있다. 1. list 2. set 3. map 여기서도 읽기/쓰기가 가능한지(mutable), 읽기만 가능한지(immutable)에 따라 선언방식이 다르다. 1. List 리스트는 배열과 같은 기능을 가진다. listOf로 초기화하면 읽기만 가능한 리스트가 생성이 되고, mutableListOf로 선언한 리스트는 add나 removeAt등의 함수를 이용해 값을 변경할 수 있다. 아래 소스코드는 리스트의 값 변경 및 다양한 출력 방법이다. fun main(){ val list = listOf("Kotlin", "Java", "C")//읽기 val mutableList = mutableListOf(1, 2, 3, 4)//읽기, 쓰기 //val mutableLi.. 더보기
[Kotlin] 알아가기 - 2 (fun, Lambda) 1. 코틀린 함수 코틀린에서 함수 선언은 fun으로 시작한다. calculate 함수의 파라미터 fitst와 second는 매개변수이름이고 Int형으로 받는다는 의미이다. fun main(){ calculate(1, 10) } fun calculate(first: Int, second: Int){ var sum = 0 for(i in first..second){ sum += i } println(sum) } 다음과 같이 default argument로 설정할 수도 있다. fun main(){ calculate(1, 10, "Calculate", 5) } fun calculate(first: Int = 1, second: Int = 1000, message: String, multipleOf: Int){ .. 더보기
[Kotlin] 알아가기 - 1 1. 변수 var, val var는 variable의 약자로 값의 읽기, 쓰기가 허용 val는 value의 약자로 값의 읽기만 허용 fun main(){ var name = "Kotlin" val myName = "Ko" println("Hello $name") println("Hello $myName") name = "Changed Name" myName = "Changed Name" } 위 코드에서 name은 variable로 선언되어 있고, myName은 value로 선언되어 있다. value로 선언된 myName 변수는 초기화때 말곤 값의 변경이 불가하기 때문에 myName = "Changed Name" 라인은 오류를 발생시킨다. 2. 명시적 타입 선언 컴파일러에게 이 변수는 어떤 타입이다 라고 .. 더보기
정적 분석 툴 [Sonar Qube] 소개 및 사용법 2 이전 포스트에서 Sonar Qube를 사용하기 위한 모든 준비를 마쳤다. 이제 정적 분석 툴을 돌려보자. 커맨드 창을 열어 정적 분석을 원하는 솔루션 폴더의 경로로 이동한다. (.sln) 앞서 봤던 절차대로 하나씩 카피하면서 커맨드창에 입력 해준다. (아래 3가지 명령어는 따로 복사해서 저장해두는 것을 추천) SonarScanner.MSBuild.exe begin 명령어 실행 시 위와 같은 화면이 나와야 정상이다. 혹시나 에러 발생 시 구글에 해당 에러를 검색하면 원인을 알 수 있을 것이다... 2번째 명령어 입력... 마지막 명령어 입력... 3개 명령어 수행이 잘 끝났다면 다시 Sonar Qube 웹서버로 가보자. 프로젝트 정보가 아래와 같이 갱신되었을 것이다. 여기서 결과를 보고 현재 자신의 코드에.. 더보기
정적 분석 툴 [Sonar Qube] 소개 및 사용법 1 이번에는 Sonar Lint보다 더 강력한 정적 분석 툴인 Sonarqube에 대해 알아보려 한다. 이 놈도 무료이긴한데, VS 처럼 Community(무료), Developer, Enterprise 등의 유료버전이 있다. 다행히도 무료버전에서도 기본적인 언어 15개를 지원한다. (C++, C#, Java, JS, Phython 등) 다운로드 사이트: https://www.sonarqube.org/downloads/ Download | SonarQube Download SonarQube 7.9.x LTS www.sonarqube.org 무료 버전인 커뮤니티버전을 다운받는다. 다운받으면 압축파일이 하나 생기는데 압축을 풀고 자신의 최애 경로로 이동시켜준다. \sonarqube-8.3.1.34397\bin\.. 더보기
코드 분석 플러그인 [Sonar Lint] 소개 및 사용법 무작정 코딩을 하다가 아, 내가 정말 잘 하고 있는가 의심이 들때가 있다. 항상. 혼자서 개발을 하다보니 코드리뷰를 하기엔 여의치 않은 상황이고 기능상 문제도 없고, 나름의 코딩 규칙을 만들어 코딩을 하고 있지만 검증되지 않은 것이기에 항상 불안하다. 그래서 예전에 수행했던 정적분석 툴이 떠올라서 C# 지원가능한 정적 분석 툴이 뭐가 있는지 찾아보기 시작했다. 이전엔 정보진흥원에서 제공하는 툴로 분석 의뢰를 맡기고 결과 리포트를 받았는데, 매번 그렇게 의뢰를 맡기고 하기엔 귀찮지 않은가..ㅎㅎ 찾으니까 바로 코드소나가 나온다. 음... 예전에 C++로 만든 프로젝트도 코드소나를 사용했던 것 같은데.. 오, Sonar Qube와 Sonar Lint 라는게 있다. 먼저 Sonar Lint를 찾아보니 VS N.. 더보기