This is not a question where you will get a direct answer, because both _work_. Most people will tell you it's a matter of taste. My personal opinion is: Don't lose sight of the end goal readability.


# My Favourite in a Perfect World
I prefer to write code that's "small and easy"; simple statements that are rather short. I prefer to use `!` in that code:

```csharp
if(!IsReadable) SkipWord();
```

# Reality

At work we have a legacy project which - diplomatically said - is written in a way I personally don't prefer. Using `== false` makes it more readable. Imagine something like

```csharp
if(word.IsReadable && sentence.HasSubclause && customer.HasAlreadyChosen == false
 || word.IsReadable == false && order.IsCompleted)
```

It can go on longer, but I'm gonna stop here. Don't pay much notice to how you could recombine the statements - the point is it's a lot of stuff, a lot of "noise" and it would be easier to accidentally ignore a tiny `!` in there.

Best would be to make the code overall more readable, but if a tool (resharper etc) can apply one of the styles throughout the codebase automatically, this is a way to prevent a whole bunch of bugs.

# In Summary
In my opinion: **Use `!` if your code is clean enough that it still stands out**.

And, probably obvious, but whichever one you end up using, never do `condition == true`.

And finally, mostly you'll work in a team and will have to use what the team agrees on, even if it _would_ be an obviously worse decision.