C#에서 인코딩과 디코딩(Base64, UTF, Unicode 등) 이 글에서는 인코딩과 디코딩하는 방법에 대해서 알아보도록 하겠습니다. 프로그래밍을 할 때 사용자는 String 데이터 타입을 byte[] 데이터 타입으로 변경해야 하는 경우가 많습니다. 혹은 웹상에서 byte[]로 데이터를 받아서 String으로 변환을 해야 하는 경우도 많습니다. 이런 경우 개발자는 인코딩에 대한 고려를 해야 합니다. 먼저 인코딩이 무엇인가에 대해서 알아보도록 하겠습니다. 1. 인코딩이란? 문자 인코딩(文字―, 영어: character encoding) 또는 줄여서 인코딩은 문자나 기호들의 집합을 컴퓨터에서 저장하거나 통신에 사용할 목적으로 부호화하는 방법을 가리킨다. 문자 인코딩을 통해 부호화되어, 복호화하면 본래의 ..
[프로그래밍 방법론] 객체 지향 방법론 - UML UML(Unified Modeling Language)은 분석, 설계를 사용자가 쉽게 인식하게끔 비주얼화 및 문서화 하기 위한 언어입니다. 즉 소프트웨어 개발 과정에서 산출되는 결과들을 명시하고, 문서화 하기 위한 모델링 언어인것 입니다. 이는 객체 지향 방법론을 문서화 해주는 좋은 방법을 제안하고 있습니다. 1. UML이란? UML에 대한 정의를 살펴보면 아래와 같습니다.객체 관련 표준화기구인 OMG에서 1997년 11월 객체 모델링 기술(OMT;object modeling technique), OOSE 방법론 등을 연합하여 만든 통합 모델링 언어로 객체 지향적 분석 ·설계 방법론의 표준 지정을 목표로 하고 있다. 요구 분석, 시스템 설계, 시스템 구현..
[프로그래밍 방법론] 객체와 자료구조 – Clean Code 이 글은 Clean Code 책의 내용을 정리한 것입니다. 자료 추상화 아래의 코드를 살펴보면, 두 클래스 모두 2차원의 점을 표현하고 있습니다. 하지만 하나의 클래스는 구현을 외부로 노출하고, 다른 하나는 구현을 완전히 숨기고 있습니다. public class Point { public double x; public double y; } public interface Point { double getX(); double getY(); void SetCatesian(double x, double y); } Point 인터페이스는 직교 좌표계인지, 극좌표계인지 알 수 있는 방법이 없습니다. 하지만 이 인터페이스는 자료 구조를 명백하게 표현하고 있..
[프로그래밍 방법론] 객체 지향 방법론 - 프로그램 잘 설계하기 이 글은 세상을 설계하는 객체 지향 방법론을 정리한 글입니다. 객체 지향 시작하기 위대한 소프트웨어는, 한가지로 정의가 불가능 합니다. 첫째, 위대한 소프트웨어는 고객을 만족시켜야 합니다. (요구사항 충족). 소프트웨어는 고객이 원하는 기능을 수행해야 합니다. 둘째, 좋은 소프트웨어는 잘 설계되어 있고, 잘 코딩 되어 있으며, 유지보수와 재사용 그리고 확장이 쉽습니다. 위대한 소프트웨어 만들기 프로세스는 아래와 같습니다.1) 고객이 원하는 기능을 하도록 하세요.2) 객체지향의 기본 원리를 적용해서 소프트웨어를 유연하게 만드세요.3) 유지보수와 재사용이 쉬운 디자인을 위해 노력하세요. 객체 설계시 참고사항"잘 설계된 객체는 자신의 본래 목적 ..
[프로그래밍 방법론] 코드 형식(Code Convention) – Clean Code 이 글은 Clean Code 책의 내용을 정리한 것입니다. 코드 형식을 맞추는 목적은 너무나도 중요합니다. 이 부분은 매우 중요하기 때문에 개발시 무시해서는 안되는 부분입니다. 이 부분은 의사 소통의 일환이기 때문에 융통성 없이 따르면 의사 소통에 어려움이 발생할 수 있습니다. 중요성이 나타나있는 문구를 아래에서 살펴보겠습니다. 오늘 구현한 코드가 다음 버전에서 바뀔 확률은 아주 높다. 그래서 오늘 구현한 코드의 가독성은 앞으로 바퀼 코드의 품질에 지대한 영향을 미친다. 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아 놓은 구현 스타일과 가독성 수준은 유지보수 용이성과..