본문 바로가기
반응형

개발/기본) 기본기75

기본기)C# : Namespace 명명 규칙 C# : Namespace 명명 규칙 C#에서 네임스페이스의 명명 규칙은 주로 회사 또는 프로젝트의 구조에 맞게 최상위부터 하위로 계층적인 구조를 따르는 것이 일반적입니다. 네임드 스페이스로 명명을 하게되면 무엇인지 즉시 알수 있도록 명확성과 구분을 하는 용도로 사용한다..(|)[.][.] 테스트 툴(Test Tool) 이라는 개념과 에디터 (Editor)라는 개념으로 네임드스페이스를 만드는 경우를 간단하게 정리한다. 'Editor.TestTool' 으로 네임드 스페이스를 정의하는 경우Editor'라는 큰 범주 안에 'TestTool'이 존재한다는 것을 암시합니다. 이렇게 명명하면 'Editor'라는 모듈이나 기능 내의 다양한 서브기능 중 하나로 'TestTool'을 분류할 수 있습니다. 'TestToo.. 2024. 10. 5.
기본기)C#) 튜플 값 변경 List<(enum,bool)> 튜플 값 변경 List 튜플의 형식으로 간단하게 특정 값을 사용하는 경우가 종종 존재한다.사용하는 과정에서 튜플의 형식(무명)인 경우에 값을 변경하려면 못하는 경우가 발생한다.사용하는 버전을 확인해야겠지만.대체적으로 튜플 형태로 사용하게되면 값은 '불변(immutable)' 타입으로 사용하기 때문에 발생한다. 변경하는 방법으로는새로운 튜플을 만들어서 다시 할당하는 방법이다.'ValueTuple' 형식은 가변(mutable) 타입으로 직접 값이 변경이 가능하다. using System;using System.Collections.Generic;using System.Linq;public enum MyEnum{ Value1, Value2, Value3}public class Program{ .. 2024. 8. 8.
기본기) Off-by-one error (인덱스 에러) Off-by-one error (인덱스 에러) "Off-by-one error"는 프로그래밍에서 매우 흔히 발생하는 실수로,예상한 값보다 1이 더 많거나 적게 처리되는 오류를 말한다. 대부분은 Index 의 시작 0 과 연관이 있다.   int[] numbers = {1, 2, 3, 4, 5};// 잘못된 접근: IndexOutOfRangeException이 발생할 수 있음for (int i = 0; i  string text = "Hello, World!";// "World"를 추출하고자 할 때string sub = text.Substring(7, 5); // "World"// 잘못된 접근: ArgumentOutOfRangeException이 발생할 수 있음string subError = text.Su.. 2024. 7. 23.
기본기) 타입 추론 (Type Inference) 타입 추론 (Type Inference) 타입 추론은 프로그래밍 언어에서 프로그래머가 명시적으로 타입을 지정하지 않아도 표현식의 타입을 자동으로 유추해서 자동으로 타입을 정의해서 진행하는 기능이다.이는 코드 가독성을 높이고 간결하게 만들어주고 타입 안정성과 같은 정적 타입에서도 이점을 유지할 수 있다.   1. 지역 추론 방식 변수가 선언되는 과정에서 타입을 추론이 가능하다.var x = 5; // 컴파일러가 x의 타입을 int로 추론 2. 함수 반환 타입 추론함수의 반환과정에서 반환타입을 가지고 타입을 추론이 가능하다.def add(a, b): return a + b# 정적 타입 언어에서는 컴파일러가 add 함수가 매개변수와 동일한 타입을 반환한다고 추론할 수 있습니다. 3. 제네릭 타입 추론제네.. 2024. 5. 17.
기본기)C# Null 전파 사용(dotnet style null propagation) C# Null 전파 사용(dotnet style null propagation)코드 작업을 하다보면 Null 체크를 선행(Guard Clause)하는 과정에서 좀더 간편하게 표현하는 방법 중 하나가Null 전파 라는 문법이다.  var v = string.Empty;if(o != null) v = o.ToString(); // dotnet_style_null_propagation = truevar v = o?.ToString();// dotnet_style_null_propagation = falsevar v = o == null ? null : o.ToString(); // orvar v = o != null ? o.ToString() : null;    Null 전파 사용 : [링크] IDE0031:.. 2024. 5. 13.
기본기) 비교 연산 차이 (Equls , == ) 비교 연산 차이 (Equls , == ) 비교 연산에 대해서 간략하게 정리한다. 2가지의 자주 사용하는 비교 연산자의 장점과 단점을 정리한다. 설명 == == 연산자는 값 형식(Value Types)과 참조 형식(Reference Types) 모두에서 사용될 수 있습니다. 값 형식의 경우 == 연산자는 해당 값들을 비교하여 값이 같은지 여부를 확인합니다. 참조 형식의 경우 == 연산자는 두 객체의 참조를 비교합니다. 즉, 두 객체가 동일한 메모리 위치를 가리키는지 여부를 확인합니다. 하지만 참조 형식에서 == 연산자를 사용할 때는 객체의 실제 내용이 아니라 참조 값 자체를 비교하기 때문에 주의해야 합니다. Equls Equals 메서드는 System.Object 클래스에 정의된 메.. 2024. 4. 23.
기본기) Easing (이징) Easing (이징) Easing 이란 애니메이션 및 움직임을 부드럽게 하기 위해서 사용되는 기술이다. 객체가 시작점 > 끝점까지 가는 동안에 속도를 조절해서 보다 자연스러운 효과를 만들어 내기 위해서 주로 사용한다. 일반적으로 객체의 이동 속도는 시작점에서 느리게 시작해서 중간에 빠르게 가속되고 끝에 갈수록 다시 천천히 감속하는 형태로 설계를 하는데 이는 우리의 현실 세계에서 속도를 조절할 때의 경험과 거의 일치한다. 시간에 따른 함수로 정의를 하기 때문에 t(시간)과 value 값이 수식(수학방정식)으로 표현된다. 가장 기본이 되는 종류는 다음과 같다. 선형 (ease Linear) 가속(ease in) 감속(ease out) 가속-감속(ease in-out) Easing은 .. 2024. 3. 27.
기본기)C#) String Token을 int[] Array 변경 String Token을 int[] Array 변경 String ',' 으로 구분된 형태의 정수 데이터를 사용하는 경우가 종종 있다. 간략하게 사용하는 방법을 포스팅한다. using System; class Program { static void Main() { string data = "1,2,3,4,5,6"; int[] intArray = Array.ConvertAll(data.Split(','), int.Parse); // 결과 출력 foreach (int num in intArray) { Console.WriteLine(num); } } } int[] array = { 1, 2, .. 2024. 3. 25.
C#) Event Handler 예시코드 Event Handler 예시코드 어떤 기능을 구현할때 하나의 코드를 등록/해제하는 형태로 Event를 처리하는 방법으로 간단하게 시간에 대한 처리를 하는데 해당 시간에 대한 처리가 여러가지 화면에서 같이 처리가 되어야하는 경우(오차가 없는 형태로 처리가 필요한 경우)에 유용하게 사용이 가능하다. using UnityEngine; using System; public class CustomEventArgs : EventArgs { public TimeSpan EventTime { get; private set; } public CustomEventArgs(TimeSpan eventTime) { EventTime = eventTime; } } public class EventManager : MonoBeh.. 2024. 3. 25.
기본기) 조건문 반전(Invert if statement) 조건문 반전(Invert if statement) Invert if statement 의 형태로 해당 조건에 만족하지 않는지를 먼저 판단하는 형태로 결국 해당 조건에 만족하지 않는 조건들이 먼저 선행되서 return을 처리해서 분기를 빠져나가는 형태로 구성되는 코드형태를 말한다. 휴먼이슈를 줄이고 좀더 가독성과 유지보수성을 높일수 있는 방법들이다. bool condition = true; // Original if statement if (condition) { Console.WriteLine("Condition is true"); } else { Console.WriteLine("Condition is false"); } // Inverted if statement if (!condition) { Co.. 2024. 3. 20.
기본기) 패턴 매칭 (Pattern Matching ) 패턴 매칭 (Pattern Matching ) Pattern Matching은 C# 7.0 버전부터 지원되는 기능으로, 단순한 값 비교뿐 아니라 여러 종류의 패턴을 사용하여 객체나 데이터 구조체의 값을 비교하고 추출할 수 있다. 주로 조건문(if)나 분기(Switch)에서 사용하고 다양한 패턴을 활용해서 코드를 간결하고 가독성 있게 작성이 가능하다. 정보를 기반으로 로그인하는 예시를 보면 다음과 같다. using System; public enum LoginStatus { Success, InvalidUsername, InvalidPassword } public class User { public string Username { get; set; } public string Pass.. 2024. 3. 18.
기본기) Guard Clause(Guard Statement) Guard Clause(Guard Statement) 메소드나 함수의 시작 부분에서 입력 매개변수나 조건을 빠르게 검사하여 불필요한 실행을 방지하고 코드의 가독성을 높이는 방법중 하나이다. 보통 조건문(if)를 활용해서 작성을 한다. Guard Clause 를 사용하게 되면 조건에 해당하지 않는 여러가지 많은 조건들이 있는 경우에 조기 종료 / 중지 시키는 것으로 오류를 빠르게 발견하고 코드를 더 쉽게(가독성) 해석하거나 유지보수하기가 쉽게 만든다. 간단하게 음수가 아닌 양수의 값인 경우에만 처리하는 조건 예시이다. using System; public class Example { public void CheckPositiveNumber(int number) { // Guard Cl.. 2024. 3. 18.
문제해결)Exception catched :System.ArgumentException: Enum underlying type and the object must be same type or object must be a String. Type passed in was 'System.Int64'; the enum underlying type was 'System.Int32'. at System.RuntimeType.IsEnumDefi.. Exception catched :System.ArgumentException: Enum underlying type and the object must be same type or object must be a String. Type passed in was 'System.Int64'; the enum underlying type was 'System.Int32'. at System.RuntimeType.IsEnumDefined 해당 문제는 C#에서 enum 의 정의된 값이 있는지 판단하는 Enum.IsDefined를 사용하다가 발생한 에러로 해결방법을 간략하게 포스팅 한다. 설명 데이터 타입 불일치 enum을 다룰 때 올바른 데이터 타입을 사용하는지 확인하세요. en.. 2024. 3. 8.
C#)CallerFilePath : 호출자 정보 확인 CallerFilePath : 호출자 정보 확인 CallerFilePath은 C# 5.0이상에서 사용하는 Attribute로 현재 멤버, 혹은 메소드가 포함된 경로를 제공한다. 주로 사용하는 경우는 로깅이나 디버깅같은 자신의 위치(경로)를 파악할때 사용한다. 로그 파일 확인하는 예제 using System; using System.Runtime.CompilerServices; class Logger { public static void LogFilePath([CallerFilePath] string filePath = "") { Console.WriteLine("File Path: " + filePath); } public static void Main() { LogFilePath(); } .. 2023. 12. 18.
기본기)URL(Uniform Resource Location) Format (UriBuilder) URL(Uniform Resource Location) Format (UriBuilder) URL(Uniform Resource Location) : 웹페이지, 이미지, 동영상과 같은 정보가 위치하는 유니크한 위치 정보로 URL의 구성은 다음과 같다. 예시 URL : https://www.example.com/path/to/resource?param1=value1¶m2=value2#section1 이름 구분 프로토콜(통신규약) http:// 도메인(host) www.example.com 경로(url-path) path/to/resource 넘겨주는 인자(query) param1=value1&param2=value2 section #section using Syst.. 2023. 11. 24.
반응형