TIL (Today I Learned) - Programmatic programming #7

Today's 3 Line Summary

  • Don't write code by Coincidence. Don’t assume it, prove and try it.
  • Write test code, when you write code. Try to Unit test,Property-Based Test
  • Whenever you create a name, you need to think of the reason.

TIL (Today I Learned) date

2022.04.01~02

The scope I read today

Chapter 7 While You Are Coding

What you want to remember in the book

  • Coding is not mechanical. There are decisions to be made every minute—decisions that require careful thought and judgment if the resulting program is to enjoy a long, accurate, and productive life.

Topic 37. Listen to Your Lizard Brain

  • First, stop what you’re doing.
  • Make doodles about the code you’re writing, or explain it to a coworker (preferably one who isn’t a programmer), or to your rubber duck
  • Write “I’m prototyping” on a sticky note, and stick it on the side ofyour screen.

Topic 38. Programming by Coincidence

  • As developers, we also work in minefields. There are hundreds of traps waiting to catch us each day. Remembering the soldier’s tale, we should be wary of drawing false conclusions.
  • Fred doesn’t know why the code is failing because he didn’t know why it worked in the first place.
  • Human beings are designed to see patterns and causes, even when it’s just a coincidence.
  • Don’t assume it, prove it.
  • Don’t code in the dark.
  • Don’t be a slave to history. Don’t let existing code dictate future code. All code can be replaced if it is no longer appropriate.
  • This decision may impact the project schedule. The assumption is that the impact will be less than the cost of not making the change.

Topic 39. Algorithm Speed

  • the fastest one is not always the best for the job.

Topic 40. Refactoring

  • Code needs to evolve; it’s not a static thing.
  • Rather than construction, software is more like gardening—it is more organic than concrete
  • In order to guarantee that the external behavior hasn’t changed, you need good, automated unit testing that validates the behavior of the code.
  • There’s no time like the present.
  • fail to refactor now, and there’ll be a far greater time investment to fix the problem down the road
  • Refactoring, as with most things, is easier to do while the issues are small, as an ongoing activity while coding.
  • Make sure you have good tests before you begin refactoring.
  • Manage the pain: if it hurts now, but is going to hurt even more later, you might as well get it over with.

Topic 41. Test to Code

  • We believe that the major benefits of testing happen when you think about and write the tests, not when you run them.
  • testing is vital feedback that guides your coding
  • By all means practice TDD. But, if you do, don’t forget to stop every now and then and look at the big picture.
  • When you can’t comprehend the whole problem, take small steps, one test at a time. However, this approach can mislead you, encouraging you to focus on and endlessly polish the easy problems while ignoring the real reason you’re coding.
  • Why do we go to all this trouble? Above all, we want to avoidcreating a “time bomb”—something that sits around unnoticedand blows up at an awkward moment later in the project.
  • A little forethought can go a long way toward minimizing maintenance costs and help-desk calls.

Topic 42. Property-Based Testing

  • There are also code invariants, things that remain true about some piece of state when it’s passed through a function.
  • Our suggestion is that when a property-based test fails, find out what parameters it was passing to the test function, and then use those values to create a separate, regular, unit test.
  • a unit test is the first client of your API

Topic 43. Stay Safe Out There

  • It’s a big world out there, and most of it is connected. Whether it’s a bored kid on the other side of the planet, state-sponsored terrorism, criminal gangs, corporate espionage, or even a vengeful ex, they are out there and aiming for you.
  • Security through obscurity just doesn’t work.
  • The attack surface area of a system is the sum of all access points where an attacker can enter data, extract data, or invoke execution of a service.
  • Another key principle is to use the least amount of privilege for the shortest time you can get away with.
  • Don’t leave personally identifiable information, financial data,passwords, or other credentials in plain text, whether in adatabase or some other external file.
  • As we’ve said elsewhere, rely only on reliable things

Topic 44. Naming Things

  • What’s in a name? When we’re programming, the answer is “everything!”
  • This means that, whenever you create something, you need to pause and think “what is my motivation to create this?”
  • If you aren’t vigilant about updating names as you go,you can quickly descend into a nightmare much worse than meaningless names
  • If for some reason you can’t change the now-wrong name, then you’ve got a bigger problem: an ETC violation

How did you feel reading it today?

  • Although there was a lot to read, it was a useful chapter because there were things to keep in mind when writing the programming.
  • Sometimes I can play the game better when I didn't play for about a week to a month. It is the same thing when writing the program.
  • It is important to test, but getting tired when testing many cases by manual. So, It seems important to write test code & test automation as much as possible.

Popular Posts

CloudWatch EventsはAmazon EventBridgeになるらしい

PythonのDict型をDynamoDB形式のJsonに変換する

CloudFormationテンプレート内のStep functionsのState machine定義をS3に置けるようになった