Oren Eini

aka Ayende Rahien

Oren Eini

CEO of RavenDB

a NoSQL Open Source Document Database

Get in touch with me:

oren@ravendb.net +972 52-548-6969

Posts: 7,582
|
Comments: 51,212

Copyright ©️ Ayende Rahien 2004 — 2025

Privacy Policy · Terms
filter by tags archive
stack view grid view
  • architecture (611) rss
  • bugs (450) rss
  • challanges (123) rss
  • community (379) rss
  • databases (481) rss
  • design (895) rss
  • development (641) rss
  • hibernating-practices (71) rss
  • miscellaneous (592) rss
  • performance (397) rss
  • programming (1085) rss
  • raven (1448) rss
  • ravendb.net (532) rss
  • reviews (184) rss
  • 2025
    • June (4)
    • May (10)
    • April (10)
    • March (10)
    • February (7)
    • January (12)
  • 2024
    • December (3)
    • November (2)
    • October (1)
    • September (3)
    • August (5)
    • July (10)
    • June (4)
    • May (6)
    • April (2)
    • March (8)
    • February (2)
    • January (14)
  • 2023
    • December (4)
    • October (4)
    • September (6)
    • August (12)
    • July (5)
    • June (15)
    • May (3)
    • April (11)
    • March (5)
    • February (5)
    • January (8)
  • 2022
    • December (5)
    • November (7)
    • October (7)
    • September (9)
    • August (10)
    • July (15)
    • June (12)
    • May (9)
    • April (14)
    • March (15)
    • February (13)
    • January (16)
  • 2021
    • December (23)
    • November (20)
    • October (16)
    • September (6)
    • August (16)
    • July (11)
    • June (16)
    • May (4)
    • April (10)
    • March (11)
    • February (15)
    • January (14)
  • 2020
    • December (10)
    • November (13)
    • October (15)
    • September (6)
    • August (9)
    • July (9)
    • June (17)
    • May (15)
    • April (14)
    • March (21)
    • February (16)
    • January (13)
  • 2019
    • December (17)
    • November (14)
    • October (16)
    • September (10)
    • August (8)
    • July (16)
    • June (11)
    • May (13)
    • April (18)
    • March (12)
    • February (19)
    • January (23)
  • 2018
    • December (15)
    • November (14)
    • October (19)
    • September (18)
    • August (23)
    • July (20)
    • June (20)
    • May (23)
    • April (15)
    • March (23)
    • February (19)
    • January (23)
  • 2017
    • December (21)
    • November (24)
    • October (22)
    • September (21)
    • August (23)
    • July (21)
    • June (24)
    • May (21)
    • April (21)
    • March (23)
    • February (20)
    • January (23)
  • 2016
    • December (17)
    • November (18)
    • October (22)
    • September (18)
    • August (23)
    • July (22)
    • June (17)
    • May (24)
    • April (16)
    • March (16)
    • February (21)
    • January (21)
  • 2015
    • December (5)
    • November (10)
    • October (9)
    • September (17)
    • August (20)
    • July (17)
    • June (4)
    • May (12)
    • April (9)
    • March (8)
    • February (25)
    • January (17)
  • 2014
    • December (22)
    • November (19)
    • October (21)
    • September (37)
    • August (24)
    • July (23)
    • June (13)
    • May (19)
    • April (24)
    • March (23)
    • February (21)
    • January (24)
  • 2013
    • December (23)
    • November (29)
    • October (27)
    • September (26)
    • August (24)
    • July (24)
    • June (23)
    • May (25)
    • April (26)
    • March (24)
    • February (24)
    • January (21)
  • 2012
    • December (19)
    • November (22)
    • October (27)
    • September (24)
    • August (30)
    • July (23)
    • June (25)
    • May (23)
    • April (25)
    • March (25)
    • February (28)
    • January (24)
  • 2011
    • December (17)
    • November (14)
    • October (24)
    • September (28)
    • August (27)
    • July (30)
    • June (19)
    • May (16)
    • April (30)
    • March (23)
    • February (11)
    • January (26)
  • 2010
    • December (29)
    • November (28)
    • October (35)
    • September (33)
    • August (44)
    • July (17)
    • June (20)
    • May (53)
    • April (29)
    • March (35)
    • February (33)
    • January (36)
  • 2009
    • December (37)
    • November (35)
    • October (53)
    • September (60)
    • August (66)
    • July (29)
    • June (24)
    • May (52)
    • April (63)
    • March (35)
    • February (53)
    • January (50)
  • 2008
    • December (58)
    • November (65)
    • October (46)
    • September (48)
    • August (96)
    • July (87)
    • June (45)
    • May (51)
    • April (52)
    • March (70)
    • February (43)
    • January (49)
  • 2007
    • December (100)
    • November (52)
    • October (109)
    • September (68)
    • August (80)
    • July (56)
    • June (150)
    • May (115)
    • April (73)
    • March (124)
    • February (102)
    • January (68)
  • 2006
    • December (95)
    • November (53)
    • October (120)
    • September (57)
    • August (88)
    • July (54)
    • June (103)
    • May (89)
    • April (84)
    • March (143)
    • February (78)
    • January (64)
  • 2005
    • December (70)
    • November (97)
    • October (91)
    • September (61)
    • August (74)
    • July (92)
    • June (100)
    • May (53)
    • April (42)
    • March (41)
    • February (84)
    • January (31)
  • 2004
    • December (49)
    • November (26)
    • October (26)
    • September (6)
    • April (10)
Deep Dive into RavenDB webinars
  previous post next post  
Nov 13 2007

Code review WTF, number N

time to read 1 min | 45 words

  • Using pszSqlString prefix in .NET - BAD
  • Using a naming convention where the company name is prefixed to all local variables - BAD
  • 6 lines of code to log an exception - BAD
  • Rewriting basic parts of the framework to cover bad coding on your parts - BAD
Tweet Share Share 10 comments
Tags:
  • WTF?!

  previous post next post  

Comments

Paul Stovell
13 Nov 2007
11:46 AM
Paul Stovell

One subject in basic pure math that I wish all developers would take is factorization - taking an equation, recognising and removing the duplicates and simplifying.

I still can't fathom how a developer can see the same thing over and over again - like 6 lines of code repeated every single time an exception needs to be logged - and not recognize that they can factor it out.

Paul

Grimace of Despair
13 Nov 2007
11:49 AM
Grimace of Despair

"Using a naming convention where the company name is prefixed to all local variables"

I've witnessed a Database that was prefixed with the DEVELOPERS initials, as were all tables in it...

I still shiver while writing this.

Markus Zywitza
13 Nov 2007
14:10 PM
Markus Zywitza
<pre> try { ActiveRecordMediator<Foo>.Save(foo); } catch (Exception ex) { Logger.WarnFormat(ex, "Error saving Foo {0}", foo.Name); while (ex.InnerException != null) { ex = ex.InnerException; Logger.Info("Inner Exception", ex); } } </pre>

If you count the brace lines, it's 6 lines for the exception, too. But absolute necessary unless

Castle.ActiveRecord.Framework.ActiveRecordException: Could not perform Save for Foo at ... in ...

is enough for you to see the error's cause, which isn't the case for me.

Ayende Rahien
13 Nov 2007
14:18 PM
Ayende Rahien

Markus, is there a reason that you are doing it this way?

ex.ToString() gives you the inner exception as well, after all

Markus Zywitza
13 Nov 2007
14:39 PM
Markus Zywitza

Hmm, it seems that the fact that I always use Logging now avenges. Perhaps I should have just used

Console.WriteLine(exception)

:-(

Ayende Rahien
13 Nov 2007
14:40 PM
Ayende Rahien

What is Logging?

Markus Zywitza
13 Nov 2007
14:46 PM
Markus Zywitza

What is Logging?

No special product, I simply wrote it with a capital letter because I'm accustomed to that practice. German language capitalizes all nouns, hence "Logging" instead of logging.

Ayende Rahien
13 Nov 2007
14:58 PM
Ayende Rahien

Well, most of the logging frameworks that I am aware of will handle this correctly.

Markus Zywitza
13 Nov 2007
15:08 PM
Markus Zywitza

Windsor's LoggingFacility with loggingApi="console" obviously doesn't.

Paul Stovell
13 Nov 2007
23:15 PM
Paul Stovell

@Markus:

class LogHelper

{

public static void Warn(Exception ex, string format, params object[] args) 

{

Logger.WarnFormat(ex, format, args);

while (ex.InnerException != null)

{

ex = ex.InnerException;

Logger.Info("Inner Exception", ex);

}

}

}

Now in the many places you use that code, you can have:

try

{

ActiveRecordMediator<Foo>.Save(foo);

}

catch (Exception ex)

{

LogHelper.Log("Error saving Foo {0}", foo.Name, ex);

}

}

There are thousands of libraries which require multiple lines to do something. There's no reason you should write those multiple lines twice.

Comment preview

Comments have been closed on this topic.

Markdown formatting

ESC to close

Markdown turns plain text formatting into fancy HTML formatting.

Phrase Emphasis

*italic*   **bold**
_italic_   __bold__

Links

Inline:

An [example](http://url.com/ "Title")

Reference-style labels (titles are optional):

An [example][id]. Then, anywhere
else in the doc, define the link:
  [id]: http://example.com/  "Title"

Images

Inline (titles are optional):

![alt text](/path/img.jpg "Title")

Reference-style:

![alt text][id]
[id]: /url/to/img.jpg "Title"

Headers

Setext-style:

Header 1
========
Header 2
--------

atx-style (closing #'s are optional):

# Header 1 #
## Header 2 ##
###### Header 6

Lists

Ordered, without paragraphs:

1.  Foo
2.  Bar

Unordered, with paragraphs:

*   A list item.
    With multiple paragraphs.
*   Bar

You can nest them:

*   Abacus
    * answer
*   Bubbles
    1.  bunk
    2.  bupkis
        * BELITTLER
    3. burper
*   Cunning

Blockquotes

> Email-style angle brackets
> are used for blockquotes.
> > And, they can be nested.
> #### Headers in blockquotes
> 
> * You can quote a list.
> * Etc.

Horizontal Rules

Three or more dashes or asterisks:

---
* * *
- - - - 

Manual Line Breaks

End a line with two or more spaces:

Roses are red,   
Violets are blue.

Fenced Code Blocks

Code blocks delimited by 3 or more backticks or tildas:

```
This is a preformatted
code block
```

Header IDs

Set the id of headings with {#<id>} at end of heading line:

## My Heading {#myheading}

Tables

Fruit    |Color
---------|----------
Apples   |Red
Pears	 |Green
Bananas  |Yellow

Definition Lists

Term 1
: Definition 1
Term 2
: Definition 2

Footnotes

Body text with a footnote [^1]
[^1]: Footnote text here

Abbreviations

MDD <- will have title
*[MDD]: MarkdownDeep

 

FUTURE POSTS

  1. fsync()-ing a directory on Linux (and not Windows) - one day from now

There are posts all the way to Jun 09, 2025

RECENT SERIES

  1. Webinar (7):
    05 Jun 2025 - Think inside the database
  2. Recording (16):
    29 May 2025 - RavenDB's Upcoming Optimizations Deep Dive
  3. RavenDB News (2):
    02 May 2025 - May 2025
  4. Production Postmortem (52):
    07 Apr 2025 - The race condition in the interlock
  5. RavenDB (13):
    02 Apr 2025 - .NET Aspire integration
View all series

RECENT COMMENTS

  • Can confirm :) still had the old developer license on my other PC, using the Force update now can me a green Your license has...
    By Steve on RavenDB GenAI Deep Dive
  • Steve, Please try that again, I believe that we sorted this out on our end.
    By Oren Eini on RavenDB GenAI Deep Dive
  • Should have kept a screenshot, tried that first but got a response in orange that said something like "it succeeded but the k...
    By Steve on RavenDB GenAI Deep Dive
  • Steve, You should have access to that feature, even with an older license. Please go to About > Force Update in the licen...
    By Oren Eini on RavenDB GenAI Deep Dive
  • For other people like me, my developer license was created before these features were available so I think since it didn't ex...
    By Steve on RavenDB GenAI Deep Dive

Syndication

Main feed Feed Stats
Comments feed   Comments Feed Stats
}