C# 중급 (1)

정제로·2023년 8월 4일
0

C#

목록 보기
9/30

오늘의 내용은 해당 책을 인용하여 만듬
"C# 6.0 완벽가이드: 깊고 넓게 알려주는 레퍼런스 북", 조셉 앨버허리 및 밴 앨버허리 지음(O'Reilly), 류광 옮김, ⓒ 2016 인사이트, 978-89-626-195-6"


.Net Framework

객체지향 패러다임

  • 캡슐화
    주변에 경계선을 만들어, 객체의 외부(공개) 행동과 내부(비공개) 구현 세부사항을 분리하는 것을 의미

  • 상속
    클래스 재사용을 의미함. 상위 클래스를 하위 클래스가 상속받으면 상위의 변수,메소드등을 그대로 물려받을 수 있다.
    상속이 있기에 생산성이 높아지고, 유지보수 하기가 좋다

  • 다형성
    프로그램 언어 각 요소들(상수, 변수, 식, 객체, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다.
    예) 오버로딩, 오버라이딩, 함수형 인터페이스...

  • 추상화
    토끼, 고양이, 사자, 치타가 있을 때 이것들을 각각의 객체라 하며 이 객체들을 하나로 묶으려 할 때, 동물 또는 생물이라는 어떤 추상적인 객체로 크게 정의한다고 하자. 이때 동물 또는 생물이라고 묶는 것을 추상화라고 한다.
    여기에서 탄생하는게 클래스이다

형식 안정성

  • 강한 형식 언어로도 불린다.
    예를들어 정수를 받고록 설계된 함수를 부동소수점 수로 호출하는것이 불가능하다

  • 강한형식 적용은 모래상자 안에서 실행하는 능력에도 중요하다.
    모래상자 : 보안의 모든측면을 호스트가 제어하는 환경
    프로그래머가 객체의 형식 규칙들을 우회해서 객체의 상태를 임의로 오염시키지 못하게 해야한다.

메모리 관리

  • 런타임에 의존해서 메모리를 자동으로 관리한다.

  • Common Language Runtime에는 프로그래머가 작성한 프로그램의 일부로서 실행되는 agrbage collector가 있다.
    이 수거기로 인해, 더이상 참조되지 않는 객체들의 메모리를 재확보한다.

  • C++같은 언어에서 볼 수 있는 잘못된 포인터 관련 문제가 사라진다.
    아예 C#에서 사용불가능한건 아니지만, 대부분의 프로그래밍 과제에서 포인터를 사용할 필요성을 제거시켰다.

  • 다만 성능이 중요한 부분이나 상호운용성을 위해서는 포인터를 사용할 수 있다. 단! 명시적으로 unsafe로 표시한 블록 안에서만 허용된다.


리팩토링

리팩토링이란?

  • 가독성, 유지보수성
    이미 작성한 코드에서 구현된 일련의 행위들을 변경없이, 코드의 가독성과 유지보수성을 높이기 위해 내부구조를 변경하는 것.
    지속적으로 관리하기 편하게 소스코드를 재작성하는 것을 의미.
    최적화와는 다른 문제이다.

  • 협업
    대부분의 경우 여러 사람과 함께 작업을 하게 된다. 그리고 새로운 사람이 내 프로젝트에 추가로 참여하게 되며, 인수인계가 불가능한 경우가 있기도 하다.
    그때, 새로 시작하게 되는 사람이 이해할수 있는 코드를 작성하는것이 중요하다

리팩토링을 왜할까?

  • 수정용이성 향상
  • 이해도와 가독성 향상을 위해한다.
  • 버그를 찾는데 도움이 된다
  • 개발속도가 향상된다.

리팩토링은 언제할까?

  1. RuleOfThree : 유사한 내용이 세번 이상 반복될때, 리팩토링을 고려
  2. 새로운 기능을 추가할 때
    지금 작성된 코드에 새로운 기능을 추가하기 힘들어 보이면 리팩토링을 해야한다.
  3. 코드리뷰를 할때

리팩토링 예시

using System;

class Test
{
    static void Main()
    {
        Console.WriteLine(FeetToInches(30));
        Console.WriteLine(FeetToInches(120));
    }

    static int FeetToInches(int feet)
    {
        int inches = feet * 12;
        return inches;
    }
}

와 같이, FeetToInches함수를 다른곳에서 불러서 사용한다.


C# 함수의 종류

  • 메서드
  • 연산자
  • 생성자(constructor)
  • 속성(property)
  • 이벤트
  • 인덱서
  • 종료자(finalizer)

contains 메서드

문자열 검색 함수이다, bool값을 반환한다

string str = "100$"; 
string sub = "$";
 
bool exist = str.Contains(sub);

Console.WriteLine(exist);        // True

profile
초보자입니다.. 잘못된 정보, 달게 받겠습니다..

0개의 댓글

관련 채용 정보