티스토리 뷰

반응형

새로운 업무가 주어지기 전에는 스터디가 주 업무이다. 

업무에 투입되기 전에 스터디 하는것이라 스터디는 업무의 연장선이라고 생각해야 한다.

스터디할때는 최대한 코드를 많이 보고, 최대한 다양한 것을 시도해보고, 최대한 어렵게 가는 것이 좋다. 실제 업무에 투입될때는 쉽게 가는것도 좋지만, 쉽게 갈 수 없을때를 대비해서 스터디할때 최대한 빡세게 해야한다.

굳이 스포츠와 코딩을 비교하자면 코딩에 있어서 스터디란 스포츠에 있어서 훈련이고 코딩에 있어서 업무는 스포츠에 있어서 실제경기라고 생각하면 된다.

연습을 실전처럼, 실전을 연습처럼이란 말이 코딩에도 쓰인다. 실전은 여러가지 변수로 인하여서 생각만큼의 퍼포먼스가 안나올 가능성이 농후하므로, 그 수많은 가능성을 커버하기 위해서 연습때 더 빡세게 해야하는 것과 같은 이치이다. 

 

아래의 코드는 플러터에서 BLE 기능의 스캔을 구현한 코드이다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 void startScan(List<Uuid> serviceIds) {
    _logMessage('Start ble discovery');
    _devices.clear();
    _subscription?.cancel();
    _subscription =
        _ble.scanForDevices(withServices: []).listen((DiscoveredDevice device) {
      if (device.name == "UART Service") {
        final result =
            _devices.indexWhere((element) => element.id == device.id);
 
        if (result < 0) _devices.add(device);
      }
      // var a = device.serviceUuids.indexWhere((element) =>
      //     element == Uuid.parse("C20960C0-1295-467A-F4B2-E64A33D6EFA9"));
      _pushState();
    }, onError: (Object e) => _logMessage('Device scan fails with error: $e'));
    _pushState();
  }
cs

"UART Service"라는 이름을 가진 블루투스 기기를 스캔하기 위한 코드였는데 indexwhere을 왜 써야하는지 몰랐다.

indexWhere을 쓴 이유는 그것이 없으면 무한루프가 돌아가기 때문에, indexWhere을 써서 index가 걸리면 그 값을 변수로 받아서 변수가 0미만, 즉 index가 걸리지 않을때만 그 장치를 scan에서 걸린 discoveredDevices 에 추가하도록 하기 위해서 쓰는 것이다. 

코드를 쓸 때 내가 왜 그 코드를 써야 하는지 명확한 이해가 없으면 문제 해결의 실마리를 못 찾는 것과 같다. 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함